diff --git a/meta/EDM.m b/meta/EDM.m index f633ea7fa..3aa5ceee9 100644 --- a/meta/EDM.m +++ b/meta/EDM.m @@ -369,6 +369,9 @@ If you add new kinds of vertices (e.g for new diagram types): decl ]; +GetComplexScalarCType[] := + CConversion`CreateCType[CConversion`ScalarType[CConversion`complexScalarCType]]; + (* ParsedVertex structure: ParsedVertex[ {numP1Indices, numP2Indices, ...}, @@ -400,22 +403,23 @@ If you add new kinds of vertices (e.g for new diagram types): "SingleComponentedVertex", expr = (SARAH`Cp @@ fields) /. vertexRules; expr = TreeMasses`ReplaceDependenciesReverse[expr]; - "std::complex result;\n\n" <> declareIndices <> Parameters`CreateLocalConstRefs[expr] <> "\n" <> - Parameters`ExpressionToString[expr, "result"] <> "\n" <> + "const " <> GetComplexScalarCType[] <> " result = " <> + Parameters`ExpressionToString[expr] <> ";\n\n" <> "return vertex_type(result);", - + "LeftAndRightComponentedVertex", exprL = SARAH`Cp[Sequence @@ fields][SARAH`PL] /. vertexRules; exprR = SARAH`Cp[Sequence @@ fields][SARAH`PR] /. vertexRules; exprL = TreeMasses`ReplaceDependenciesReverse[exprL]; exprR = TreeMasses`ReplaceDependenciesReverse[exprR]; - "std::complex left, right;\n\n" <> declareIndices <> Parameters`CreateLocalConstRefs[exprL + exprR] <> "\n" <> - Parameters`ExpressionToString[exprL, "left"] <> "\n" <> - Parameters`ExpressionToString[exprR, "right"] <> "\n" <> + "const " <> GetComplexScalarCType[] <> " left = " <> + Parameters`ExpressionToString[exprL] <> ";\n\n" <> + "const " <> GetComplexScalarCType[] <> " right = " <> + Parameters`ExpressionToString[exprR] <> ";\n\n" <> "return vertex_type(left, right);"]; sarahFields = SARAH`getParticleName /@ fields;