# How to Use Collect with Fortran Form expression or How to Convert results of Collect into Fortran Form expressions?

For example:

expr = (a0 D11+(a0^2 D11)/2+(a1^2 D11)/4+(a2^2 D11)/4+(a3^2 D11)/4+(a4^2 D11)/4+(a5^2 D11)/4+(a6^2 D11)/4+(a7^2 D11)/4+(a8^2 D11)/4+(d0^2 D11)/2+(d1^2 D11)/4+b0 D12+(b0^2 D12)/2+(b1^2 D12)/4+(b2^2 D12)/4+(b3^2 D12)/4+(b4^2 D12)/4+(b5^2 D12)/4+(b6^2 D12)/4+(b7^2 D12)/4+(b8^2 D12)/4+c0 D13+(c0^2 D13)/2+(c1^2 D13)/4+(c2^2 D13)/4+(c3^2 D13)/4+(c4^2 D13)/4+d0 D14+b0 d0 D14+(b1 d1 D14)/2+(b2 D14 d2)/2+(D11 d2^2)/4+(b3 D14 d3)/2+(D11 d3^2)/4+(b4 D14 d4)/2+(D11 d4^2)/4+(b5 D14 d5)/2+(D11 d5^2)/4+(b6 D14 d6)/2+(D11 d6^2)/4+(b7 D14 d7)/2+(D11 d7^2)/4+(b8 D14 d8)/2+(D11 d8^2)/4+(a1 D14 e1)/2+(D12 e1^2)/4+(a2 D14 e2)/2+(D12 e2^2)/4+(a3 D14 e3)/2+(D12 e3^2)/4+(a4 D14 e4)/2+(D12 e4^2)/4+(a5 D14 e5)/2+(D12 e5^2)/4+(a6 D14 e6)/2+(D12 e6^2)/4+(a7 D14 e7)/2+(D12 e7^2)/4+(a8 D14 e8)/2+(D12 e8^2)/4+(D13 f0^2)/2+(D13 f1^2)/4+(D13 f2^2)/4+(D13 f3^2)/4+(D13 f4^2)/4+(D13 f5^2)/4+(D13 f6^2)/4+(D13 f7^2)/4+(D13 f8^2)/4+(D12 g0^2)/2+(D12 g1^2)/4+(D12 g2^2)/4+(D12 g3^2)/4+(D12 g4^2)/4+(D12 g5^2)/4+(D12 g6^2)/4+(D12 g7^2)/4+(D12 g8^2)/4+D14 g0 h0+(D11 h0^2)/2+(D14 g1 h1)/2+(D11 h1^2)/4+(D14 g2 h2)/2+(D11 h2^2)/4+(D14 g3 h3)/2+(D11 h3^2)/4+(D14 g4 h4)/2+(D11 h4^2)/4+(D13 j0^2)/2+(D13 j1^2)/4+(D13 j2^2)/4+(D13 j3^2)/4+(D13 j4^2)/4+(D13 j5^2)/4+(D13 j6^2)/4+(D13 j7^2)/4+(D13 j8^2)/4+(a1 D11+a0 a1 D11+(a1 a3 D11)/2+(a2 a4 D11)/2+(a3 a5 D11)/2+(a4 a6 D11)/2+(a5 a7 D11)/2+(a6 a8 D11)/2+d0 d1 D11+b1 D12+b0 b1 D12+(b1 b3 D12)/2+(b2 b4 D12)/2+(b3 b5 D12)/2+(b4 b6 D12)/2+(b5 b7 D12)/2+(b6 b8 D12)/2+c1 D13+c0 c1 D13+(c1 c3 D13)/2+(c2 c4 D13)/2+b1 d0 D14+d1 D14+b0 d1 D14+(b3 d1 D14)/2+(b4 D14 d2)/2+(d1 D11 d3)/2+(b1 D14 d3)/2+(b5 D14 d3)/2+(b2 D14 d4)/2+(b6 D14 d4)/2+(D11 d2 d4)/2+(b3 D14 d5)/2+(b7 D14 d5)/2+(D11 d3 d5)/2+(b4 D14 d6)/2+(b8 D14 d6)/2+(D11 d4 d6)/2+(b5 D14 d7)/2+(D11 d5 d7)/2+(b6 D14 d8)/2+(D11 d6 d8)/2+D14 e1+a0 D14 e1+(a3 D14 e1)/2+(a4 D14 e2)/2+(a1 D14 e3)/2+(a5 D14 e3)/2+(D12 e1 e3)/2+(a2 D14 e4)/2+(a6 D14 e4)/2+(D12 e2 e4)/2+(a3 D14 e5)/2+(a7 D14 e5)/2+(D12 e3 e5)/2+(a4 D14 e6)/2+(a8 D14 e6)/2+(D12 e4 e6)/2+(a5 D14 e7)/2+(D12 e5 e7)/2+(a6 D14 e8)/2+(D12 e6 e8)/2+D13 f0 f1+(D13 f1 f3)/2+(D13 f2 f4)/2+(D13 f3 f5)/2+(D13 f4 f6)/2+(D13 f5 f7)/2+(D13 f6 f8)/2+D12 g0 g1+(D12 g1 g3)/2+(D12 g2 g4)/2+(D12 g3 g5)/2+(D12 g4 g6)/2+(D12 g5 g7)/2+(D12 g6 g8)/2+D14 g1 h0+D14 g0 h1+(D14 g3 h1)/2+D11 h0 h1+(D14 g4 h2)/2+(D14 g1 h3)/2+(D14 g5 h3)/2+(D11 h1 h3)/2+(D14 g2 h4)/2+(D14 g6 h4)/2+(D11 h2 h4)/2+D13 j0 j1+(D13 j1 j3)/2+(D13 j2 j4)/2+(D13 j3 j5)/2+(D13 j4 j6)/2+(D13 j5 j7)/2+(D13 j6 j8)/2) Cos[angle n])

In this expression, one part is constant and other part is multiplied by Cos[angle n]. I derived this result using Collect but do not know how to further convert it into fortran form or otherwise how first i convert expression so that later on, I can use Collect to print coefficient? Also one more point, Collect[expr, {Cos[n*angle], Sin[n*angle]}] this expression is for Cos and Sin terms, How we can use Collect to print the constant part also?

One possibility is the following: Suppose you put this into a file called f.m :

If[FindFile["FeynCalc"] === $Failed, (* as explained here: https://github.com/FeynCalc/feyncalc/wiki/Installation *) Import["http://users.ph.tum.de/ga57tah/feyncalc/FeynCalcInstallNightly.m"] ]; Needs["FeynCalc"]; (* assuming you use Fortran 90 or newer*)$FortranContinuationCharacter = "";

expr=(a0 D11+(a0^2 D11)/2+(a1^2 D11)/4+(a2^2 D11)/4+(a3^2 D11)/4+(a4^2 D11)/4+(a5^2 D11)/4+(a6^2 D11)/4+(a7^2 D11)/4+(a8^2 D11)/4+(d0^2 D11)/2+(d1^2 D11)/4+b0 D12+(b0^2 D12)/2+(b1^2 D12)/4+(b2^2 D12)/4+(b3^2 D12)/4+(b4^2 D12)/4+(b5^2 D12)/4+(b6^2 D12)/4+(b7^2 D12)/4+(b8^2 D12)/4+c0 D13+(c0^2 D13)/2+(c1^2 D13)/4+(c2^2 D13)/4+(c3^2 D13)/4+(c4^2 D13)/4+d0 D14+b0 d0 D14+(b1 d1 D14)/2+(b2 D14 d2)/2+(D11 d2^2)/4+(b3 D14 d3)/2+(D11 d3^2)/4+(b4 D14 d4)/2+(D11 d4^2)/4+(b5 D14 d5)/2+(D11 d5^2)/4+(b6 D14 d6)/2+(D11 d6^2)/4+(b7 D14 d7)/2+(D11 d7^2)/4+(b8 D14 d8)/2+(D11 d8^2)/4+(a1 D14 e1)/2+(D12 e1^2)/4+(a2 D14 e2)/2+(D12 e2^2)/4+(a3 D14 e3)/2+(D12 e3^2)/4+(a4 D14 e4)/2+(D12 e4^2)/4+(a5 D14 e5)/2+(D12 e5^2)/4+(a6 D14 e6)/2+(D12 e6^2)/4+(a7 D14 e7)/2+(D12 e7^2)/4+(a8 D14 e8)/2+(D12 e8^2)/4+(D13 f0^2)/2+(D13 f1^2)/4+(D13 f2^2)/4+(D13 f3^2)/4+(D13 f4^2)/4+(D13 f5^2)/4+(D13 f6^2)/4+(D13 f7^2)/4+(D13 f8^2)/4+(D12 g0^2)/2+(D12 g1^2)/4+(D12 g2^2)/4+(D12 g3^2)/4+(D12 g4^2)/4+(D12 g5^2)/4+(D12 g6^2)/4+(D12 g7^2)/4+(D12 g8^2)/4+D14 g0 h0+(D11 h0^2)/2+(D14 g1 h1)/2+(D11 h1^2)/4+(D14 g2 h2)/2+(D11 h2^2)/4+(D14 g3 h3)/2+(D11 h3^2)/4+(D14 g4 h4)/2+(D11 h4^2)/4+(D13 j0^2)/2+(D13 j1^2)/4+(D13 j2^2)/4+(D13 j3^2)/4+(D13 j4^2)/4+(D13 j5^2)/4+(D13 j6^2)/4+(D13 j7^2)/4+(D13 j8^2)/4+(a1 D11+a0 a1 D11+(a1 a3 D11)/2+(a2 a4 D11)/2+(a3 a5 D11)/2+(a4 a6 D11)/2+(a5 a7 D11)/2+(a6 a8 D11)/2+d0 d1 D11+b1 D12+b0 b1 D12+(b1 b3 D12)/2+(b2 b4 D12)/2+(b3 b5 D12)/2+(b4 b6 D12)/2+(b5 b7 D12)/2+(b6 b8 D12)/2+c1 D13+c0 c1 D13+(c1 c3 D13)/2+(c2 c4 D13)/2+b1 d0 D14+d1 D14+b0 d1 D14+(b3 d1 D14)/2+(b4 D14 d2)/2+(d1 D11 d3)/2+(b1 D14 d3)/2+(b5 D14 d3)/2+(b2 D14 d4)/2+(b6 D14 d4)/2+(D11 d2 d4)/2+(b3 D14 d5)/2+(b7 D14 d5)/2+(D11 d3 d5)/2+(b4 D14 d6)/2+(b8 D14 d6)/2+(D11 d4 d6)/2+(b5 D14 d7)/2+(D11 d5 d7)/2+(b6 D14 d8)/2+(D11 d6 d8)/2+D14 e1+a0 D14 e1+(a3 D14 e1)/2+(a4 D14 e2)/2+(a1 D14 e3)/2+(a5 D14 e3)/2+(D12 e1 e3)/2+(a2 D14 e4)/2+(a6 D14 e4)/2+(D12 e2 e4)/2+(a3 D14 e5)/2+(a7 D14 e5)/2+(D12 e3 e5)/2+(a4 D14 e6)/2+(a8 D14 e6)/2+(D12 e4 e6)/2+(a5 D14 e7)/2+(D12 e5 e7)/2+(a6 D14 e8)/2+(D12 e6 e8)/2+D13 f0 f1+(D13 f1 f3)/2+(D13 f2 f4)/2+(D13 f3 f5)/2+(D13 f4 f6)/2+(D13 f5 f7)/2+(D13 f6 f8)/2+D12 g0 g1+(D12 g1 g3)/2+(D12 g2 g4)/2+(D12 g3 g5)/2+(D12 g4 g6)/2+(D12 g5 g7)/2+(D12 g6 g8)/2+D14 g1 h0+D14 g0 h1+(D14 g3 h1)/2+D11 h0 h1+(D14 g4 h2)/2+(D14 g1 h3)/2+(D14 g5 h3)/2+(D11 h1 h3)/2+(D14 g2 h4)/2+(D14 g6 h4)/2+(D11 h2 h4)/2+D13 j0 j1+(D13 j1 j3)/2+(D13 j2 j4)/2+(D13 j3 j5)/2+(D13 j4 j6)/2+(D13 j5 j7)/2+(D13 j6 j8)/2) Cos[angle n]);

(* see http://www.feyncalc.org/FeynCalcBook/Collect2/ *)
new = Collect2[expr, {Sin, Cos}];

(* see http://www.feyncalc.org/FeynCalcBook/Write2/ *)
Write2["out.f", res = new, FormatType -> FortranForm, StringReplace -> {"Cos" -> "cos"}];

FilePrint @ "out.f"


Then, e.g. on Linux:

In[1]:= <<f.m
$PrePrint is set to FeynCalcForm. Use FI and FC to change the display format. FeynCalc 9.0.0. For help, type ?FeynCalc, use the help browser or visit www.feyncalc.org. res = 2.5D-1*(4D0*a0*D11 + 2D0*a0**2*D11 + a1**2*D11 + a2**2*D11 + a3**2*D11 + a4**2*D11 + a5**2*D11 + a6**2*D11 + a7**2*D11 + a8**2*D11 + 2D0*d0**2*D11 + d1**2*D11 + 4D0*b0*D12 + 2D0*b0**2*D12 + b1**2*D12 + b2**2*D12 + b3**2*D12 + b4**2*D12 + b5**2*D12 + b6**2*D12 + b7**2*D12 + b8**2*D12 + 4D0*c0*D13 + 2D0*c0**2*D13 + c1**2*D13 + c2**2*D13 + c3**2*D13 + c4**2*D13 + 4D0*d0*D14 + 4D0*b0*d0*D14 + 2D0*b1*d1*D14 + 2D0*b2*D14*d2 + D11*d2**2 + 2D0*b3*D14*d3 + D11*d3**2 + 2D0*b4*D14*d4 + D11*d4**2 + 2D0*b5*D14*d5 + D11*d5**2 + 2D0*b6*D14*d6 + D11*d6**2 + 2D0*b7*D14*d7 + D11*d7**2 + 2D0*b8*D14*d8 + D11*d8**2 + 2D0*a1*D14*e1 + D12*e1**2 + 2D0*a2*D14*e2 + D12*e2**2 + 2D0*a3*D14*e3 + D12*e3**2 + 2D0*a4*D14*e4 + D12*e4**2 + 2D0*a5*D14*e5 + D12*e5**2 + 2D0*a6*D14*e6 + D12*e6**2 + 2D0*a7*D14*e7 + D12*e7**2 + 2D0*a8*D14*e8 + D12*e8**2 + 2D0*D13*f0**2 + D13*f1**2 + D13*f2**2 + D13*f3**2 + D13*f4**2 + D13*f5**2 + D13*f6**2 + D13*f7**2 + D13*f8**2 + 2D0*D12*g0**2 + D12*g1**2 + D12*g2**2 + D12*g3**2 + D12*g4**2 + D12*g5**2 + D12*g6**2 + D12*g7**2 + D12*g8**2 + 4D0*D14*g0*h0 + 2D0*D11*h0**2 + 2D0*D14*g1*h1 + D11*h1**2 + 2D0*D14*g2*h2 + D11*h2**2 + 2D0*D14*g3*h3 + D11*h3**2 + 2D0*D14*g4*h4 + D11*h4**2 + 2D0*D13*j0**2 + D13*j1**2 + D13*j2**2 + D13*j3**2 + D13*j4**2 + D13*j5**2 + D13*j6**2 + D13*j7**2 + D13*j8**2) + 5.D-1*(2D0*a1*D11 + 2D0*a0*a1*D11 + a1*a3*D11 + a2*a4*D11 + a3*a5*D11 + a4*a6*D11 + a5*a7*D11 + a6*a8*D11 + 2D0*d0*d1*D11 + 2D0*b1*D12 + 2D0*b0*b1*D12 + b1*b3*D12 + b2*b4*D12 + b3*b5*D12 + b4*b6*D12 + b5*b7*D12 + b6*b8*D12 + 2D0*c1*D13 + 2D0*c0*c1*D13 + c1*c3*D13 + c2*c4*D13 + 2D0*b1*d0*D14 + 2D0*d1*D14 + 2D0*b0*d1*D14 + b3*d1*D14 + b4*D14*d2 + d1*D11*d3 + b1*D14*d3 + b5*D14*d3 + b2*D14*d4 + b6*D14*d4 + D11*d2*d4 + b3*D14*d5 + b7*D14*d5 + D11*d3*d5 + b4*D14*d6 + b8*D14*d6 + D11*d4*d6 + b5*D14*d7 + D11*d5*d7 + b6*D14*d8 + D11*d6*d8 + 2D0*D14*e1 + 2D0*a0*D14*e1 + a3*D14*e1 + a4*D14*e2 + a1*D14*e3 + a5*D14*e3 + D12*e1*e3 + a2*D14*e4 + a6*D14*e4 + D12*e2*e4 + a3*D14*e5 + a7*D14*e5 + D12*e3*e5 + a4*D14*e6 + a8*D14*e6 + D12*e4*e6 + a5*D14*e7 + D12*e5*e7 + a6*D14*e8 + D12*e6*e8 + 2D0*D13*f0*f1 + D13*f1*f3 + D13*f2*f4 + D13*f3*f5 + D13*f4*f6 + D13*f5*f7 + D13*f6*f8 + 2D0*D12*g0*g1 + D12*g1*g3 + D12*g2*g4 + D12*g3*g5 + D12*g4*g6 + D12*g5*g7 + D12*g6*g8 + 2D0*D14*g1*h0 + 2D0*D14*g0*h1 + D14*g3*h1 + 2D0*D11*h0*h1 + D14*g4*h2 + D14*g1*h3 + D14*g5*h3 + D11*h1*h3 + D14*g2*h4 + D14*g6*h4 + D11*h2*h4 + 2D0*D13*j0*j1 + D13*j1*j3 + D13*j2*j4 + D13*j3*j5 + D13*j4*j6 + D13*j5*j7 + D13*j6*j8)*cos(angle*n)  Using the value of expr from your question, you can extract the coefficient of the$\cos$function and the constant part as follows: coscoefficient = Coefficient[expr, Cos[angle n]]; constantpart = expr - coscoefficient * Cos[angle n];  You can check that indeed your expression expr can be reconstructed from those two parts: constantpart + Cos[angle n]*coscoefficient == expr (* Out: True *)  You can then reformat these two parts into Fortran format using FortranForm. In order to avoid line breaks in the converted code, you can set the PageWidth of the current output stream to Infinity as follows: SetOptions[$Output, PageWidth -> Infinity]