コード例 #1
0
ファイル: mpi-div.c プロジェクト: 3null/fastsocket
int
mpi_fdiv_r( MPI rem, MPI dividend, MPI divisor )
{
	int rc = -ENOMEM;
	int divisor_sign = divisor->sign;
	MPI temp_divisor = NULL;

	/* We need the original value of the divisor after the remainder has been
	 * preliminary calculated.	We have to copy it to temporary space if it's
	 * the same variable as REM.  */
	if( rem == divisor ) {
		if (mpi_copy( &temp_divisor, divisor ) < 0) goto nomem;
		divisor = temp_divisor;
	}

	if (mpi_tdiv_qr(NULL, rem, dividend, divisor ) < 0) goto nomem;
	if( ((divisor_sign?1:0) ^ (dividend->sign?1:0)) && rem->nlimbs )
		if (mpi_add( rem, rem, divisor) < 0) goto nomem;

	rc = 0;

 nomem:
	if( temp_divisor )
		mpi_free(temp_divisor);
	return rc;
}
コード例 #2
0
ファイル: mpi-div.c プロジェクト: 3null/fastsocket
int
mpi_fdiv_qr( MPI quot, MPI rem, MPI dividend, MPI divisor )
{
    int divisor_sign = divisor->sign;
    MPI temp_divisor = NULL;

    if( quot == divisor || rem == divisor ) {
	if (mpi_copy( &temp_divisor, divisor ) < 0)
		return -ENOMEM;
	divisor = temp_divisor;
    }

    if (mpi_tdiv_qr( quot, rem, dividend, divisor ) < 0)
	    goto nomem;

    if( (divisor_sign ^ dividend->sign) && rem->nlimbs ) {
	    if (mpi_sub_ui( quot, quot, 1 ) < 0)
		    goto nomem;
	    if (mpi_add( rem, rem, divisor) < 0)
		    goto nomem;
    }

    if( temp_divisor )
	mpi_free(temp_divisor);

    return 0;

 nomem:
    mpi_free(temp_divisor);
    return -ENOMEM;
}
コード例 #3
0
ファイル: mpi-div.c プロジェクト: RokaComLLC/RokaGPG
void
mpi_fdiv_qr( MPI quot, MPI rem, MPI dividend, MPI divisor )
{
    int divisor_sign = divisor->sign;
    MPI temp_divisor = NULL;

    if( quot == divisor || rem == divisor ) {
	temp_divisor = mpi_copy_gpg( divisor );
	divisor = temp_divisor;
    }

    mpi_tdiv_qr( quot, rem, dividend, divisor );

    if( (divisor_sign ^ dividend->sign) && rem->nlimbs ) {
	mpi_sub_ui( quot, quot, 1 );
	mpi_add( rem, rem, divisor);
    }

    if( temp_divisor )
	mpi_free_gpg(temp_divisor);
}
コード例 #4
0
ファイル: mpi-div.c プロジェクト: RokaComLLC/RokaGPG
void
mpi_tdiv_r( MPI rem, MPI num, MPI den)
{
    mpi_tdiv_qr(NULL, rem, num, den );
}
コード例 #5
0
ファイル: mpi-div.c プロジェクト: 3null/fastsocket
int
mpi_tdiv_r( MPI rem, MPI num, MPI den)
{
    return mpi_tdiv_qr(NULL, rem, num, den );
}