Ejemplo n.º 1
0
extern "C" Box* complexDivInt(BoxedComplex* lhs, BoxedInt* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == int_cls);
    if (rhs->n == 0) {
        raiseDivZeroExc();
    }
    return boxComplex(lhs->real / (double)rhs->n, lhs->imag / (double)rhs->n);
}
Ejemplo n.º 2
0
extern "C" Box* complexDivFloat(BoxedComplex* lhs, BoxedFloat* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == float_cls);
    if (rhs->d == 0.0) {
        raiseDivZeroExc();
    }
    return boxComplex(lhs->real / rhs->d, lhs->imag / rhs->d);
}
Ejemplo n.º 3
0
extern "C" Box* complexSubInt(BoxedComplex* lhs, BoxedInt* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == int_cls);
    return boxComplex(lhs->real - (double)rhs->n, lhs->imag);
}
Ejemplo n.º 4
0
extern "C" Box* complexSubFloat(BoxedComplex* lhs, BoxedFloat* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == float_cls);
    return boxComplex(lhs->real - rhs->d, lhs->imag);
}
Ejemplo n.º 5
0
extern "C" Box* complexSubComplex(BoxedComplex* lhs, BoxedComplex* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == complex_cls);
    return boxComplex(lhs->real - rhs->real, lhs->imag - rhs->imag);
}
Ejemplo n.º 6
0
extern "C" Box* complexMulComplex(BoxedComplex* lhs, BoxedComplex* rhs) {
    assert(lhs->cls == complex_cls);
    assert(rhs->cls == complex_cls);
    return boxComplex(lhs->real * rhs->real - lhs->imag * rhs->imag, lhs->real * rhs->imag + lhs->imag * rhs->real);
}
Ejemplo n.º 7
0
extern "C" Box* complexAddInt(BoxedComplex* lhs, BoxedInt* rhs) {
    assert(lhs->cls == complex_cls);
    assert(isSubclass(rhs->cls, int_cls));
    return boxComplex(lhs->real + (double)rhs->n, lhs->imag);
}