I'm trying to use Mathematica for building complex derivatives for my Fortran code. Therefore I have to do some wild string replacements to make that work. Anyway, I got quite far already but now it would come in handy if I could automatically overwrite let's say the Power
method.
What I want is that Mathematica should replace e.g. x^(1/4)
with x**z14
on FortranForm
. What does work is this:
i=1;
j=4;
Unprotect[Power];
Power /: Format[Power[x_, i/j], FortranForm]:=x^ToExpression["z" <> ToString[i] <> ToString[j]]
Protect[Power];
ToString[Power[x, i/j], FortranForm]
This will give x**z14
as expected.
If I try to automate the process for more fractions
Unprotect[Power];
For[i = 1, i <= 9, i++,
For[j = 1, j <= 9, j++,
If[j > 1 && j != i && Mod[i, j] != 0,
Power /: Format[Power[x_, i/j], FortranForm]:=x^ToExpression["z"<> ToString[i] <> ToString[j]];
,Null
]
]
]
Protect[Power];
ToString[Power[x, i/j], FortranForm]
I get x**z1010
instead?
Can anyone help me and tell me what I'm doing wrong? Or is this even possible?
Thanks!