Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / f90.texi
blob1ebc6f6107008c11c60c95b276f58c630ffed2cb
1 @menu
2 * Functions for f90::
3 @end menu
5 @c -----------------------------------------------------------------------------
6 @node Functions for f90,  , Package f90, Package f90
7 @section Package f90
9 @opencatbox{Categories:}
10 @category{Share packages}
11 @category{Package f90}
12 @closecatbox
13 @c -----------------------------------------------------------------------------
15 @c -----------------------------------------------------------------------------
16 @anchor{f90_output_line_length_max}
17 @defvr {Option variable} f90_output_line_length_max
18 Default value: 65
20 @code{f90_output_line_length_max} is the maximum number of characters of Fortran code
21 which are output by @code{f90} per line.
22 Longer lines of code are divided, and printed with an ampersand @code{&} at the end of an output line
23 and an ampersand at the beginning of the following line.
25 @code{f90_output_line_length_max} must be a positive integer.
27 Example:
29 @c ===beg===
30 @c load ("f90")$
31 @c foo : expand ((xxx + yyy + 7)^4);
32 @c f90_output_line_length_max;
33 @c f90 ('foo = foo);
34 @c f90_output_line_length_max : 40 $
35 @c f90 ('foo = foo);
36 @c ===end===
37 @example
38 (%i1) load ("f90")$
39 (%i2) foo : expand ((xxx + yyy + 7)^4);
40          4            3         3        2    2             2
41 (%o2) yyy  + 4 xxx yyy  + 28 yyy  + 6 xxx  yyy  + 84 xxx yyy
42           2        3             2
43  + 294 yyy  + 4 xxx  yyy + 84 xxx  yyy + 588 xxx yyy + 1372 yyy
44       4         3          2
45  + xxx  + 28 xxx  + 294 xxx  + 1372 xxx + 2401
46 (%i3) f90_output_line_length_max;
47 (%o3)                          65
48 (%i4) f90 ('foo = foo);
49 foo = yyy**4+4*xxx*yyy**3+28*yyy**3+6*xxx**2*yyy**2+84*xxx*yyy**2&
50 &+294*yyy**2+4*xxx**3*yyy+84*xxx**2*yyy+588*xxx*yyy+1372*yyy+xxx**&
51 &4+28*xxx**3+294*xxx**2+1372*xxx+2401
52 (%o4)                         false
53 (%i5) f90_output_line_length_max : 40 $
54 (%i6) f90 ('foo = foo);
55 foo = yyy**4+4*xxx*yyy**3+28*yyy**3+6*xx&
56 &x**2*yyy**2+84*xxx*yyy**2+294*yyy**2+4*x&
57 &xx**3*yyy+84*xxx**2*yyy+588*xxx*yyy+1372&
58 &*yyy+xxx**4+28*xxx**3+294*xxx**2+1372*xx&
59 &x+2401
60 (%o6)                         false
61 @end example
63 @opencatbox{Categories:}
64 @category{Global variables}
65 @category{Translation and compilation}
66 @category{Package f90}
67 @closecatbox
68 @end defvr
70 @c -----------------------------------------------------------------------------
71 @anchor{function_f90}
72 @deffn {Function} f90 (@var{expr_1}, @dots{}, @var{expr_n})
74 Prints one or more expressions @var{expr_1}, @dots{}, @var{expr_n}
75 as a Fortran 90 program.
76 Output is printed to the standard output.
78 @code{f90} prints output in the so-called "free form" input format for
79 Fortran 90: there is no special attention to column positions.
80 Long lines are split at a fixed width with the ampersand @code{&} continuation
81 character;
82 the number of output characters per line, not including ampersands,
83 is specified by @code{f90_output_line_length_max}.
84 @code{f90} outputs an ampersand at the end of a split line
85 and another at the beginning of the next line.
87 @code{load("f90")} loads this function.  See also the function @mrefdot{fortran}
89 Examples:
91 @c ===beg===
92 @c load ("f90")$
93 @c foo : expand ((xxx + yyy + 7)^4);
94 @c f90 ('foo = foo);
95 @c ===end===
96 @example
97 (%i1) load ("f90")$
98 (%i2) foo : expand ((xxx + yyy + 7)^4);
99          4            3         3        2    2             2
100 (%o2) yyy  + 4 xxx yyy  + 28 yyy  + 6 xxx  yyy  + 84 xxx yyy
101           2        3             2
102  + 294 yyy  + 4 xxx  yyy + 84 xxx  yyy + 588 xxx yyy + 1372 yyy
103       4         3          2
104  + xxx  + 28 xxx  + 294 xxx  + 1372 xxx + 2401
105 (%i3) f90 ('foo = foo);
106 foo = yyy**4+4*xxx*yyy**3+28*yyy**3+6*xxx**2*yyy**2+84*xxx*yyy**2&
107 &+294*yyy**2+4*xxx**3*yyy+84*xxx**2*yyy+588*xxx*yyy+1372*yyy+xxx**&
108 &4+28*xxx**3+294*xxx**2+1372*xxx+2401
109 (%o3)                         false
110 @end example
112 Multiple expressions.
113 Capture standard output into a file via the @mref{with_stdout} function.
115 @c ===beg===
116 @c load ("f90")$
117 @c foo : sin (3*x + 1) - cos (7*x - 2);
118 @c with_stdout ("foo.f90", f90 (x = 0.25, y = 0.625, 'foo = foo, 'stop, 'end));
119 @c printfile ("foo.f90");
120 @c ===end===
121 @example
122 (%i1) load ("f90")$
123 (%i2) foo : sin (3*x + 1) - cos (7*x - 2);
124 (%o2)              sin(3 x + 1) - cos(7 x - 2)
125 (%i3) with_stdout ("foo.f90",
126                    f90 (x=0.25, y=0.625, 'foo=foo, 'stop, 'end));
127 (%o3)                         false
128 (%i4) printfile ("foo.f90");
129 x = 0.25
130 y = 0.625
131 foo = sin(3*x+1)-cos(7*x-2)
132 stop
134 (%o4)                        foo.f90
135 @end example
137 @opencatbox{Categories:}
138 @category{Translation and compilation}
139 @category{Package f90}
140 @closecatbox
141 @end deffn