Skip to content

Commit

Permalink
Adding Erfinv math function
Browse files Browse the repository at this point in the history
  • Loading branch information
pratikmota committed May 26, 2024
1 parent 210cd8f commit 5b6b4d5
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions evaldo/builtins_math.go
Original file line number Diff line number Diff line change
Expand Up @@ -432,20 +432,28 @@ var Builtins_math = map[string]*env.Builtin{
Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object {
switch val := arg0.(type) {
case env.Integer:
if val.Value < 0 || val.Value > 2 {
return MakeBuiltinError(ps, "Invalid input: erfcinv is only defined for 0 <= x <= 2.", "erfcinv")
}
return *env.NewDecimal(math.Erfcinv(float64(val.Value)))
case env.Decimal:
if val.Value < 0 || val.Value > 2 {
return MakeBuiltinError(ps, "Invalid input: erfcinv is only defined for 0 <= x <= 2.", "erfcinv")
}
return *env.NewDecimal(math.Erfcinv(val.Value))
default:
return MakeArgError(ps, 1, []env.Type{env.IntegerType, env.DecimalType}, "erfcinv")
}
},
},
"erfinv": {
Argsn: 1,
Doc: "Returns the inverse error function of value.",
Fn: func(ps *env.ProgramState, arg0 env.Object, arg1 env.Object, arg2 env.Object, arg3 env.Object, arg4 env.Object) env.Object {
switch val := arg0.(type) {
case env.Integer:
return *env.NewDecimal(math.Erfinv(float64(val.Value)))
case env.Decimal:
return *env.NewDecimal(math.Erfinv(val.Value))
default:
return MakeArgError(ps, 1, []env.Type{env.IntegerType, env.DecimalType}, "erfinv")
}
},
},
"pi": {
Argsn: 0,
Doc: "Return Pi constant.",
Expand Down

0 comments on commit 5b6b4d5

Please sign in to comment.