| 155 | } |
| 156 | |
| 157 | func (p *Pow) Call(args []super.Value) super.Value { |
| 158 | a, b := args[0].Under(), args[1].Under() |
| 159 | if a.IsNull() || b.IsNull() { |
| 160 | return super.Null |
| 161 | } |
| 162 | if !super.IsNumber(a.Type().ID()) { |
| 163 | return p.sctx.WrapError("pow: not a number", args[0]) |
| 164 | } |
| 165 | if !super.IsNumber(b.Type().ID()) { |
| 166 | return p.sctx.WrapError("pow: not a number", args[1]) |
| 167 | } |
| 168 | x, _ := coerce.ToFloat(a, super.TypeFloat64) |
| 169 | y, _ := coerce.ToFloat(b, super.TypeFloat64) |
| 170 | return super.NewFloat64(math.Pow(x, y)) |
| 171 | } |
| 172 | |
| 173 | type Sqrt struct { |
| 174 | sctx *super.Context |