コード例 #1
0
ファイル: math.go プロジェクト: raoulvdberge/stak
func abs(context *parser.FunctionCallContext) error {
	values, err := parser.ValidateArguments(context, "abs", parser.VALUE_NUMBER)

	if err != nil {
		return err
	}

	context.Block.Stack.Push(parser.NewValueFromRat(big.NewRat(0, 1).Abs(values[0].N)))

	return nil
}
コード例 #2
0
ファイル: std.go プロジェクト: raoulvdberge/stak
func div(context *parser.FunctionCallContext) error {
	values, err := parser.ValidateArguments(context, "div", parser.VALUE_NUMBER, parser.VALUE_NUMBER)

	if err != nil {
		return err
	}

	if values[0].N.Cmp(big.NewRat(0, 1)) == 0 {
		return util.NewInvalidArgumentError("div", "division by zero", context.Token.Line, context.Token.Column, context.Token.File)
	}

	context.Block.Stack.Push(parser.NewValueFromRat(big.NewRat(0, 1).Quo(values[1].N, values[0].N)))

	return nil
}