Name: Vladyslav Shtabovenko Date: 02/17/16-05:21:10 PM Z


Dear Wen-Long,

I see. Sorry that I apparently overlooked the wrong results of the
D-conversion.

This is of course a bug, that I hopefully managed to fix. I also added
a Precision option to Write2, for handling cases like 2/3, which gives a
repeating decimal so that one has to know where to cut it. There also
was a problem with Mathematica 10, where Write refused to apply the
custom format on expressions, although the same code works perfectly
fine on versions 8 and 9.

Anyhow, now the results look like this:

Write2[“sang.abc”, abc = 0.6*(-8 + 12 Log[5 + y[1]]),
  abc1 = 1/x^(2/3), FormatType -> FortranForm, Precision -> 10];
Import[“sang.abc”, “Text”]

  abc = 6.D-1*(-8D0 + 1.2D1*Log(5D0 + y(1D0)))
        abc1 = x**-6.666666667D-1

Write2[“sang.abc”, abc = 0.6*(-8 + 12 Log[5 + y[1]]),
  abc1 = 1/x^(2/3), FormatType -> FortranForm, Precision -> 3];
Import[“sang.abc”, “Text”]

 abc = 6.D-1*(-8D0 + 1.2D1*Log(5D0 + y(1D0)))
 abc1 = x**-6.67D-1

Write2[“sang.abc”, abc = 0.6*(-8 + 12 Log[5 + y[1]]),
 abc1 = 1/x^(2/3), FormatType -> FortranForm,
 FortranFormatDoublePrecision -> False]
Import[“sang.abc”, “Text”]

 abc = 0.6*(-8. + 12.*Log(5. + y(1.)))
 abc1 = x**(-0.6666666666666666)

For the moment I pushed the patch to the development branch:

<https://github.com/FeynCalc/feyncalc/commit/ea03857c4f8b7b38c9cd724d8f1f183a74f8b8b7>

that you can install via

Import[“https://raw.githubusercontent.com/FeynCalc/feyncalc/master/install.m”]
InstallFeynCalc[InstallFeynCalcDevelopmentVersion -> True]

Please let me know, if this fixes your issues and if it introduces any
new problems. If everything is ok, I will push it also to the stable branch.

Cheers,
Vladyslav

Am 17.02.2016 um 06:49 schrieb wen-long sang:
> Dear Vladyslav,
>
> Thank you for your reply! You are right, “D” corresponds to double precision in fortran. Actually, I need a double precision expression in fortran. However, abc = 0.6*(-8 + 12 Log[5 + y[1]]) and abc1 = 1/x^(2/3) will be translated to abc = 6.D-1*(-8D0 + 12D1*Log(5D0 + y(1D0))) and abc1 = x**-6.666666666666666D0D-1, where 12 ==> 12D1 (12D1=120), and -2/3 ==> -6.666666666666666D0D-1 (fortran may not understand D0D-1). So is this a bug?
>
> Best Regards
> Wen-Long
>