Compare commits
	
		
			No commits in common. "5910345c08bca370ac67778e37e2ab930d9eacb6" and "3a30d890c629d1f7580225c4961163c4a28c9af1" have entirely different histories.
		
	
	
		
			5910345c08
			...
			3a30d890c6
		
	
		
| @ -34,16 +34,16 @@ func evalMultiply(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 		s, _ := leftValue.(string) | 		s, _ := leftValue.(string) | ||||||
| 		n, _ := rightValue.(int64) | 		n, _ := rightValue.(int64) | ||||||
| 		v = strings.Repeat(s, int(n)) | 		v = strings.Repeat(s, int(n)) | ||||||
| 	} else if isNumOrFract(leftValue) && isNumOrFract(rightValue) { | 	} else if isNumber(leftValue) && isNumber(rightValue) { | ||||||
| 		if isFloat(leftValue) || isFloat(rightValue) { | 		if isFloat(leftValue) || isFloat(rightValue) { | ||||||
| 			v = numAsFloat(leftValue) * numAsFloat(rightValue) | 			v = numAsFloat(leftValue) * numAsFloat(rightValue) | ||||||
| 		} else if isFraction(leftValue) || isFraction(rightValue) { |  | ||||||
| 			v, err = mulAnyFract(leftValue, rightValue) |  | ||||||
| 		} else { | 		} else { | ||||||
| 			leftInt, _ := leftValue.(int64) | 			leftInt, _ := leftValue.(int64) | ||||||
| 			rightInt, _ := rightValue.(int64) | 			rightInt, _ := rightValue.(int64) | ||||||
| 			v = leftInt * rightInt | 			v = leftInt * rightInt | ||||||
| 		} | 		} | ||||||
|  | 	} else if isFraction(leftValue) || isFraction(rightValue) { | ||||||
|  | 		v, err = mulAnyFract(leftValue, rightValue) | ||||||
| 	} else { | 	} else { | ||||||
| 		err = self.errIncompatibleTypes(leftValue, rightValue) | 		err = self.errIncompatibleTypes(leftValue, rightValue) | ||||||
| 	} | 	} | ||||||
| @ -71,7 +71,7 @@ func evalDivide(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if isNumOrFract(leftValue) && isNumOrFract(rightValue) { | 	if isNumber(leftValue) && isNumber(rightValue) { | ||||||
| 		if isFloat(leftValue) || isFloat(rightValue) { | 		if isFloat(leftValue) || isFloat(rightValue) { | ||||||
| 			d := numAsFloat(rightValue) | 			d := numAsFloat(rightValue) | ||||||
| 			if d == 0.0 { | 			if d == 0.0 { | ||||||
| @ -79,8 +79,6 @@ func evalDivide(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 			} else { | 			} else { | ||||||
| 				v = numAsFloat(leftValue) / d | 				v = numAsFloat(leftValue) / d | ||||||
| 			} | 			} | ||||||
| 		} else if isFraction(leftValue) || isFraction(rightValue) { |  | ||||||
| 			v, err = divAnyFract(leftValue, rightValue) |  | ||||||
| 		} else { | 		} else { | ||||||
| 			leftInt, _ := leftValue.(int64) | 			leftInt, _ := leftValue.(int64) | ||||||
| 			if rightInt, _ := rightValue.(int64); rightInt == 0 { | 			if rightInt, _ := rightValue.(int64); rightInt == 0 { | ||||||
| @ -89,6 +87,8 @@ func evalDivide(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 				v = leftInt / rightInt | 				v = leftInt / rightInt | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 	} else if isFraction(leftValue) || isFraction(rightValue) { | ||||||
|  | 		v, err = divAnyFract(leftValue, rightValue) | ||||||
| 	} else { | 	} else { | ||||||
| 		err = self.errIncompatibleTypes(leftValue, rightValue) | 		err = self.errIncompatibleTypes(leftValue, rightValue) | ||||||
| 	} | 	} | ||||||
| @ -114,7 +114,7 @@ func evalDivideAsFloat(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if isNumOrFract(leftValue) && isNumOrFract(rightValue) { | 	if isNumber(leftValue) && isNumber(rightValue) { | ||||||
| 		d := numAsFloat(rightValue) | 		d := numAsFloat(rightValue) | ||||||
| 		if d == 0.0 { | 		if d == 0.0 { | ||||||
| 			err = errors.New("division by zero") | 			err = errors.New("division by zero") | ||||||
|  | |||||||
| @ -56,11 +56,7 @@ func evalPlus(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 		} | 		} | ||||||
| 		v = &sumList | 		v = &sumList | ||||||
| 	} else if isFraction(leftValue) || isFraction(rightValue) { | 	} else if isFraction(leftValue) || isFraction(rightValue) { | ||||||
| 		if isFloat(leftValue) || isFloat(rightValue) { | 		v, err = sumAnyFract(leftValue, rightValue) | ||||||
| 			v = numAsFloat(leftValue) + numAsFloat(rightValue) |  | ||||||
| 		} else { |  | ||||||
| 			v, err = sumAnyFract(leftValue, rightValue) |  | ||||||
| 		} |  | ||||||
| 	} else { | 	} else { | ||||||
| 		err = self.errIncompatibleTypes(leftValue, rightValue) | 		err = self.errIncompatibleTypes(leftValue, rightValue) | ||||||
| 	} | 	} | ||||||
| @ -86,11 +82,9 @@ func evalMinus(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if isNumOrFract(leftValue) && isNumOrFract(rightValue) { | 	if isNumber(leftValue) && isNumber(rightValue) { | ||||||
| 		if isFloat(leftValue) || isFloat(rightValue) { | 		if isFloat(leftValue) || isFloat(rightValue) { | ||||||
| 			v = numAsFloat(leftValue) - numAsFloat(rightValue) | 			v = numAsFloat(leftValue) - numAsFloat(rightValue) | ||||||
| 		} else if isFraction(leftValue) || isFraction(rightValue) { |  | ||||||
| 			v, err = subAnyFract(leftValue, rightValue) |  | ||||||
| 		} else { | 		} else { | ||||||
| 			leftInt, _ := leftValue.(int64) | 			leftInt, _ := leftValue.(int64) | ||||||
| 			rightInt, _ := rightValue.(int64) | 			rightInt, _ := rightValue.(int64) | ||||||
| @ -106,6 +100,8 @@ func evalMinus(ctx ExprContext, self *term) (v any, err error) { | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		v = &diffList | 		v = &diffList | ||||||
|  | 	} else if isFraction(leftValue) || isFraction(rightValue) { | ||||||
|  | 		v, err = subAnyFract(leftValue, rightValue) | ||||||
| 	} else { | 	} else { | ||||||
| 		err = self.errIncompatibleTypes(leftValue, rightValue) | 		err = self.errIncompatibleTypes(leftValue, rightValue) | ||||||
| 	} | 	} | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								utils.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								utils.go
									
									
									
									
									
								
							| @ -38,10 +38,6 @@ func isNumber(v any) (ok bool) { | |||||||
| 	return isFloat(v) || isInteger(v) | 	return isFloat(v) || isInteger(v) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func isNumOrFract(v any) (ok bool) { |  | ||||||
| 	return isFloat(v) || isInteger(v) || isFraction(v) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| func isNumberString(v any) (ok bool) { | func isNumberString(v any) (ok bool) { | ||||||
| 	return isString(v) || isNumber(v) | 	return isString(v) || isNumber(v) | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user