## Function: bcmod version 483

 Function: Description: Get the modulus of the left_operand using modulus.
 Version: 483 Status: obsolete Date: 2012-03-16 21:30 Summary: Just removing rounding to get previous results. Programmer: jj5
Edit function
 Code: /* Note: this function is a hack, and it only supports the use cases I require at the moment, being: arbitrary precision integer left_operand and native precision positive integer modulus (must fit in a native number, i.e. a double). */ function bcmod( left_operand, modulus ) { var i, d; function split( operand ) { var parts = operand.split( '.' ); i = parts[ 0 ]; d = '0.' + ( parts.length > 1 ? parts[ 1 ] : '0' ); } //modulus = Math.round( parseFloat( modulus ) ); modulus = parseFloat( modulus ); modulus = abs( modulus ); if ( modulus === 0 ) { return null; } var take = 4; var modulus_limit = Math.pow( 10, take ); if ( modulus >= modulus_limit ) { throw new Error( "Modulus cannot be " + modulus_limit + " or greater." ); } var result = 0; split( left_operand ); var read_length = 0; function read() { read_length = i.length < take ? i.length : take; var result = i.substr( 0, take ); i = i.substr( take ); return result; } do { var n = parseInt( read() ); result = ( result * Math.pow( 10, read_length ) + n ) % modulus; } while ( i.length > 0 ); result += parseFloat( d ); var test = result - modulus; result = test < 0 ? result : test; //result = Math.round( result, 0.0000000000001 ); return result.toString(); } You have to be logged in to edit functions.
[top]