Function Rules - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


convert special functions applying contiguity rules


Calling Sequence




Calling Sequence

convert(expr, function, "rule1", "rule2", ...)




Maple expression, equation, or a set or list of them



name of the function to which the contiguity rule(s) are applied



Maple string indicating the rule, for example, "raise a"



convert/function_rules converts the special functions in an expression applying to it contiguity rules, that is, rules which mix, raise or lower by one, or normalize each of the parameters entering a special function. For example,




(1) = convert((1), HermiteH, "raise a");



A typical call to convert to apply these contiguity conversion rules may include many rules at once, in which case the rules are applied in sequence, as given (see the second last example).


The special functions implemented in Maple typically depend on one variable - say z - and zero parameters - for example, the Airy functions - up to one variable and three parameters - for example, the JacobiP function. The convention followed to indicate the parameter with respect to which the contiguity rule will be applied is: use a,b,c to respectively refer to the first, second and third parameters. The rules known by the system are:

"raise a",

"lower a",

"normalize a",

"raise b",

"lower b",

"normalize b",

"raise c",

"lower c",

"normalize c",

"mix a and b",

"1F1 to 0F1",

"0F1 to 1F1"


It is then possible to raise, lower, or normalize the first, second or third parameter in an independent manner. In addition, it is possible to "mix" the first and second parameters, where mixing means applying a contiguity relation where both the first and second parameters change and the new parameters are a function of the original ones.


In addition to these rules, the following rules with application restricted to the hypergeometric function are available.

"quadratic 1",

"quadratic 2",

"quadratic 3"

"quadratic 4",

"quadratic 5",

"quadratic 6"


"raise 1/2",

"lower 1/2"


Regarding the rule relating 0F1 to 1F1, the 0F1(;gamma;z) hypergeometric function - in Maple represented by hypergeom([],[gamma],z) - can always be rewritten as 1F1(alpha;beta;z)) for some alpha and beta, and these resulting 1F1 functions, which are not the most general ones, can be converted back to the 0F1 form. To perform those conversions, use the rules "0F1 to 1F1", "1F1 to 0F1" respectively, for example, as in convert(expr, hypergeom, "0F1 to 1F1"). For these two rules, which relate Kummer, Cylindrical and Whittaker, all 1F1 functions, to the Bessel related ones, all 0F1, due to the frequency with which the rule is applied, a special shortcut is also provided via convert(expr, `0F1 to 1F1`) and ditto for `1F1 to 0F1`.


When normalizing a parameter - for example, using the option "normalize a" - if the parameter value is positive and greater than one the parameter will be lowered as close as possible to one; if its value is negative and lower than -1, it will be raised as close as possible to -1. When the parameter is an algebraic expression involving symbols, the approach described will be applied to the rational numeric part of it - see the examples below. This normalization scheme is convenient in varied situations, including zero recognition.


Regarding the contiguity rules for the pFq hypergeometric function, they are implemented only for 1F1 and 2F1 and the convention is as follows. For the confluent hypergeometric function, that is 1F1(alpha; beta; z) , in Maple implemented as hypergeom([alpha],[beta],z), the rule "raise a" will raise by one the single parameter found in the first list (here alpha) while the rule "raise b" will raise by one the single parameter found in the second list (here beta).


For the Gauss hypergeometric function, that is 2F1(alpha, beta; gamma; z), in Maple implemented as hypergeom([alpha,beta],[gamma],z), the rule "raise a" will raise by one the first parameter in the first list (here alpha), "raise b" will raise by one the second parameter of the first list (here beta) and "raise c" will raise by one the first parameter in the second list (here gamma). The idea is to think first, second, third the same way you read the parameters in the usual mathematical notation 2F1(alpha, beta; gamma; z).


Consider the 1F1 confluent hypergeometric function and the contiguity rule for raising by one the first parameter




H0=convertH0,hypergeom,raise a



Here is a concrete example




HHconvertH,hypergeom,raise a



The contiguity rule "mixing" the indices is

H0=convertH0,hypergeom,mix a and b



Applying it to HH our original H appears rewritten as

HHconvertHH,hypergeom,mix a and b



The contiguity rule for lowering by one the second parameter is

H0=convertH0,hypergeom,lower b



Applying it to HH our original H appears now as

convertHH,hypergeom,lower b



Applying recursively the rules for the raising and lowering the first and second parameters in order to make them as close as possible to one you normalize H to

convertH,hypergeom,normalize a,normalize b



This expression is equal to the original H




The given H actually admits a 0F1 representation:

H=convertH,`1F1 to 0F1`



from which a Bessel related form is possible, in this case - in turn - automatically simplified to trigonometric functions:




Consider the associated Legendre function




The first parameter is raised using the rule

=convert,LegendreP,raise a



The rule for raising the second parameter involves radicals in a particular way, related to the way these functions are defined in Maple

=convert,LegendreP,raise b



The Maple definition for the associated Legendre functions is in terms of their hypergeometric representation:







The application of "rule conversions" can be requested with many rules at once and performed in any desired specific order; for instance, consider the following expression




By applying rules for normalizing the first and second indices of all Kummer functions and then mixing these two parameters you obtain varied mathematically equivalent representations for the same expression

convertee,KummerU,normalize a,normalize b,mix a and b



factorconvert,KummerU,normalize a,normalize b,mix a and b



A further manipulation actually shows the expression is equal to zero

convert,KummerU,normalize a,normalize b,mix a and b



Due to the importance of the 2F1 hypergeometric function, a special set of conversion rules for it is available. Each of these rules is valid under certain conditions on the 2F1 parameters. The conversion happens only when the condition is satisfied. For arbitrary values of the parameters, these conversions can also performed using assuming.







To see "which assumptions" are required for each rule as well as all the rules available for the 2F1 function use


2a2b&comma;hypergeoma&comma;b&comma;c&comma;z=hypergeom2a&comma;2b&comma;12+a+b&comma;121z2&comma;z112+a+bc=0&comma;lower 1/2&comma;hypergeom1&comma;1&comma;2&comma;z=hypergeom12&comma;12&comma;32&comma;z22+z24z12z2+z1zz22z+22z12+z22&comma;z<1&comma;lower a&comma;hypergeoma&comma;b&comma;c&comma;z=ab1z2a+c+2hypergeomb&comma;a1&comma;c&comma;z+c+a1hypergeomb&comma;a2&comma;c&comma;za1z1&comma;a1z1&comma;lower c&comma;hypergeoma&comma;b&comma;c&comma;z=1c2z+1c2+a+b+3zhypergeoma&comma;b&comma;c1&comma;z+hypergeoma&comma;b&comma;c2&comma;zz1c2c+1+ac+1+bz&comma;quadratic 1&comma;hypergeoma&comma;b&comma;c&comma;z=hypergeom2a1&comma;1+2b&comma;12+a+b&comma;121z21z&comma;z112+a+bc=0&comma;quadratic 2&comma;hypergeoma&comma;b&comma;c&comma;z=hypergeom2a1&comma;12+ab&comma;12+a+b&comma;1+1z1+1z22a21+1z2a11z&comma;z112+a+bc=0&comma;quadratic 3&comma;hypergeoma&comma;b&comma;c&comma;z=hypergeom2a&comma;2b&comma;12+a+b&comma;121z2&comma;z112+a+bc=0&comma;quadratic 4&comma;hypergeoma&comma;b&comma;c&comma;z=22ahypergeom2a&comma;12+ab&comma;12+a+b&comma;1+1z1+1z1+1z2a&comma;z112+a+bc=0&comma;quadratic 5&comma;hypergeoma&comma;b&comma;c&comma;z=hypergeoma&comma;a+2b&comma;12+b&comma;1+1z241z1za2&comma;z12bc=0&comma;quadratic 6&comma;hypergeoma&comma;b&comma;c&comma;z=22ahypergeoma&comma;12+ab&comma;12+b&comma;1+1z21+1z21+1z2a&comma;z12bc=0&comma;raise 1/2&comma;hypergeom12&comma;12&comma;32&comma;z=I1z+z+Ihypergeom1&comma;1&comma;2&comma;1zIz+1z&comma;z0&comma;raise a&comma;hypergeoma&comma;b&comma;c&comma;z=z+2a+b1zc+2hypergeomb&comma;a+1&comma;c&comma;z+hypergeomb&comma;a+2&comma;c&comma;zz1a+1c+1+a&comma;ca10&comma;raise c&comma;hypergeoma&comma;b&comma;c&comma;z=a+b2c1zchypergeoma&comma;b&comma;c+1&comma;zhypergeoma&comma;b&comma;c+2&comma;zzbc1c+a1c+1cz1


See Also