FortranForm incorrectly maintains fractional powers as rationals - these will be truncated by a compiler.
In[4]:= FortranForm[x^(-2/7)] Out[4]//FortranForm= x**(-2/7)Using FortranAssign most rational powers are converted to floating point numbers.
In[5]:= FortranAssign[x^(-2/7),AssignIndent->""] Out[5]//OutputForm= x**(-2.d0/7.d0)This representation is generally more compact than carrying out the division, which will be handled by a compiler when creating the executable file. Where possible, Mathematica functions are converted to compiled language functions (see section
In[6]:= FortranAssign[y x^(-1/2),AssignIndent->""] Out[6]//OutputForm= y/sqrt(x)The only exception to the conversion of rational exponents to floats concerns expressions of the form
Unlike C, FORTRAN compilers recognise integer powers and use special heuristics to evaluate them more efficiently than floats. Therefore FortranAssign maintains integer powers as integers.
In[7]:= FortranAssign[x^7,AssignIndent->""] Out[7]//OutputForm= x**7A strategy for efficient factorisation of powers is implemented in a separate package for peforming optimizations (see section