?? Obara & Oturupon: Mathematics

Obara handles addition/multiplication, Oturupon handles subtraction/division.

Use Case 1: Financial Calculator

// finance.ifa - Compound interest and loan calculations

// Compound Interest: A = P(1 + r/n)^(nt)
ise compound_interest(principal, rate, years, compounds_per_year) {
    ayanmo r = rate / 100;
    ayanmo n = compounds_per_year;
    ayanmo t = years;
    
    ayanmo base = Obara.add(1, Oturupon.div(r, n));
    ayanmo exponent = Obara.mul(n, t);
    ayanmo multiplier = Obara.pow(base, exponent);
    
    padap? Obara.mul(principal, multiplier);
}

// Monthly loan payment: M = P[r(1+r)^n]/[(1+r)^n-1]
ise monthly_payment(principal, annual_rate, years) {
    ayanmo monthly_rate = Oturupon.div(annual_rate / 100, 12);
    ayanmo n = Obara.mul(years, 12);
    
    ayanmo pow_term = Obara.pow(Obara.add(1, monthly_rate), n);
    ayanmo numerator = Obara.mul(monthly_rate, pow_term);
    ayanmo denominator = Oturupon.sub(pow_term, 1);
    
    padap? Obara.mul(principal, Oturupon.div(numerator, denominator));
}

// Usage
Irosu.fo("?? Financial Calculator");
Irosu.fo("---------------------");

ayanmo future_value = compound_interest(10000, 5, 10, 12);
Irosu.fo("$10,000 at 5% for 10 years = $" + Obara.round(future_value, 2));

ayanmo payment = monthly_payment(200000, 4.5, 30);
Irosu.fo("$200k mortgage at 4.5% = $" + Obara.round(payment, 2) + "/month");

Use Case 2: Unit Converter

// converter.ifa - Temperature and measurement conversions

// Temperature
ise celsius_to_fahrenheit(c) {
    padap? Obara.add(Obara.mul(c, 1.8), 32);
}

ise fahrenheit_to_celsius(f) {
    padap? Oturupon.div(Oturupon.sub(f, 32), 1.8);
}

// Distance
ise km_to_miles(km) {
    padap? Obara.mul(km, 0.621371);
}

ise miles_to_km(miles) {
    padap? Obara.mul(miles, 1.60934);
}

// Weight
ise kg_to_pounds(kg) {
    padap? Obara.mul(kg, 2.20462);
}

ise pounds_to_kg(lbs) {
    padap? Oturupon.div(lbs, 2.20462);
}

// Currency (with exchange rate)
ise convert_currency(amount, rate) {
    padap? Obara.mul(amount, rate);
}

// Usage
Irosu.fo("?? Unit Converter");
Irosu.fo("------------------");

Irosu.fo("25°C = " + celsius_to_fahrenheit(25) + "°F");
Irosu.fo("100°F = " + Obara.round(fahrenheit_to_celsius(100), 1) + "°C");
Irosu.fo("100 km = " + Obara.round(km_to_miles(100), 2) + " miles");
Irosu.fo("75 kg = " + Obara.round(kg_to_pounds(75), 1) + " lbs");
Irosu.fo("$100 USD = ?" + convert_currency(100, 1500) + " NGN");

Use Case 3: Statistics Library

// stats.ifa - Statistical calculations

ise mean(values) {
    ayanmo sum = Osa.sum(values);
    padap? Oturupon.div(sum, Ogunda.len(values));
}

ise median(values) {
    ayanmo sorted = Osa.sort(values);
    ayanmo n = Ogunda.len(sorted);
    ayanmo mid = Oturupon.div(n, 2);
    
    ti (Oturupon.mod(n, 2) == 0) {
        ayanmo a = Ogunda.get(sorted, mid - 1);
        ayanmo b = Ogunda.get(sorted, mid);
        padap? Oturupon.div(Obara.add(a, b), 2);
    }
    
    padap? Ogunda.get(sorted, mid);
}

ise variance(values) {
    ayanmo avg = mean(values);
    ayanmo sum_sq = 0;
    
    fun v ninu values {
        ayanmo diff = Oturupon.sub(v, avg);
        ayanmo sum_sq = Obara.add(sum_sq, Obara.mul(diff, diff));
    }
    
    padap? Oturupon.div(sum_sq, Ogunda.len(values));
}

ise std_dev(values) {
    padap? Oturupon.sqrt(variance(values));
}

ise percentile(values, p) {
    ayanmo sorted = Osa.sort(values);
    ayanmo index = Obara.mul(Oturupon.div(p, 100), Ogunda.len(sorted) - 1);
    padap? Ogunda.get(sorted, Obara.floor(index));
}

// Usage
ayanmo data = [23, 45, 67, 12, 89, 34, 56, 78, 90, 11, 44, 66];

Irosu.fo("?? Statistics");
Irosu.fo("-------------");
Irosu.fo("Data: " + data);
Irosu.fo("Mean: " + Obara.round(mean(data), 2));
Irosu.fo("Median: " + median(data));
Irosu.fo("Std Dev: " + Obara.round(std_dev(data), 2));
Irosu.fo("25th percentile: " + percentile(data, 25));
Irosu.fo("75th percentile: " + percentile(data, 75));

Use Case 4: Geometry Calculator

// geometry.ifa - Shape area and volume calculations

ayanmo PI = 3.14159265359;

// 2D Shapes
ise circle_area(radius) {
    padap? Obara.mul(PI, Obara.pow(radius, 2));
}

ise rectangle_area(width, height) {
    padap? Obara.mul(width, height);
}

ise triangle_area(base, height) {
    padap? Oturupon.div(Obara.mul(base, height), 2);
}

// 3D Shapes
ise sphere_volume(radius) {
    padap? Obara.mul(Oturupon.div(4, 3), Obara.mul(PI, Obara.pow(radius, 3)));
}

ise cylinder_volume(radius, height) {
    padap? Obara.mul(Obara.mul(PI, Obara.pow(radius, 2)), height);
}

ise cone_volume(radius, height) {
    padap? Oturupon.div(cylinder_volume(radius, height), 3);
}

// Pythagorean theorem
ise hypotenuse(a, b) {
    padap? Oturupon.sqrt(Obara.add(Obara.pow(a, 2), Obara.pow(b, 2)));
}

// Usage
Irosu.fo("?? Geometry Calculator");
Irosu.fo("----------------------");

Irosu.fo("Circle (r=5): " + Obara.round(circle_area(5), 2) + " sq units");
Irosu.fo("Rectangle (4x6): " + rectangle_area(4, 6) + " sq units");
Irosu.fo("Triangle (base=8, h=5): " + triangle_area(8, 5) + " sq units");
Irosu.fo("Sphere (r=3): " + Obara.round(sphere_volume(3), 2) + " cubic units");
Irosu.fo("Cylinder (r=2, h=10): " + Obara.round(cylinder_volume(2, 10), 2) + " cubic units");
Irosu.fo("Right triangle (3,4): hyp = " + hypotenuse(3, 4));