コード例 #1
0
ファイル: NewtFns.c プロジェクト: pablomarx/NEWT0
newtRef NcMultiply(newtRefArg r1, newtRefArg r2)
{
    bool	real;

    if (! NewtArgsIsNumber(r1, r2, &real))
		return NewtThrow0(kNErrNotANumber);

    if (real)
    {
        double real1;
        double real2;

        real1 = NewtRefToReal(r1);
        real2 = NewtRefToReal(r2);

        return NewtMakeReal(real1 * real2);
    }
    else
    {
        int32_t	int1;
        int32_t	int2;

        int1 = NewtRefToInteger(r1);
        int2 = NewtRefToInteger(r2);

        return NewtMakeInteger(int1 * int2);
    }
}
コード例 #2
0
ファイル: NewtFns.c プロジェクト: ekoeppen/NEWT0
newtRef NcDivide(newtRefArg r1, newtRefArg r2)
{
    bool	real;

    if (! NewtArgsIsNumber(r1, r2, &real))
		return NewtThrow0(kNErrNotANumber);

    if (real)
    {
        double real1;
        double real2;

        real1 = NewtRefToReal(r1);
        real2 = NewtRefToReal(r2);

        if (real2 == 0.0)
            return NewtThrow(kNErrDiv0, r2);

        return NewtMakeReal(real1 / real2);
    }
    else
    {
        int32_t	int1;
        int32_t	int2;

        int1 = NewtRefToInteger(r1);
        int2 = NewtRefToInteger(r2);

        if (int2 == 0)
            return NewtThrow(kNErrDiv0, r2);

        return NewtMakeInteger(int1 / int2);
    }
}