#!/bin/bash # Basic Math Module # Provides arithmetic operations and mathematical utilities module_version math.basic 1.0.0 # Basic arithmetic operations add() { local a="$1" local b="$2" echo "$((a + b))" } sub() { local a="$1" local b="$2" echo "$((a - b))" } subtract() { sub "$@" } mul() { local a="$1" local b="$2" echo "$((a * b))" } multiply() { mul "$@" } div() { local a="$1" local b="$2" if [[ "$b" -eq 0 ]]; then error "Division by zero" return ${EXIT_FAILURE:-1} fi echo "$((a / b))" } divide() { div "$@" } mod() { local a="$1" local b="$2" if [[ "$b" -eq 0 ]]; then error "Modulo by zero" return ${EXIT_FAILURE:-1} fi echo "$((a % b))" } pow() { local base="$1" local exp="$2" local result=1 if [[ "$exp" -lt 0 ]]; then error "Negative exponent not supported" return ${EXIT_FAILURE:-1} fi for ((i=0; i /dev/null; then awk "BEGIN{srand(); print $min + ($max - $min) * rand()}" else # Fallback to integer random_int "$min" "$max" fi } # Export module functions export_module math.basic \ add sub subtract mul multiply div divide mod pow power \ eq equal ne not_equal lt less le less_equal gt greater ge greater_equal \ min max min_array max_array sum avg \ abs fact gcd lcm \ is_even is_odd is_prime \ fib fib_n sqrt_int \ in_range clamp \ dec_to_bin dec_to_hex \ is_number \ safe_add safe_sub safe_mul safe_div \ random_int random_float