anchor.diff:          try
               match tn with
               | _ when tn = TypeName.ofType<int> -> sprintf "%d" (c.GetConvertedValue<int>())
  +            | _ when tn = TypeName.ofType<int64> -> sprintf "%d" (c.GetConvertedValue<int64>())
               | _ when tn = TypeName.ofType<single> -> sprintf "%e" (c.GetConvertedValue<single>())
               | _ when tn = TypeName.ofType<double> -> sprintf "%e" (c.GetConvertedValue<double>())
               | _ -> failwithf "unsupported type: %A" tn
  
positive.code: 
      let private cppType tn =
          match tn with
          | _ when tn = TypeName.ofType<int> -> "int"
          | _ when tn = TypeName.ofType<single> -> "float"
          | _ when tn = TypeName.ofType<double> -> "double"
          | _ -> failwithf "unsupported type: %A" tn
  
negative.code:                     |> Seq.map (fun (sym, pow) ->
                          [for p in 0L .. pow-1L do yield sizeSymVars.[sym]]
                          |> String.concat "*")
                      |> Seq.append (Seq.singleton (sprintf "%dLL" fac.IntValue))
                      |> String.concat " * ")
                  |> String.concat " + "
  
  