lib/Utils.php
public static function getJSF($k1, $k2)
    {
        $jsf = array( array(), array() );
        $k1 = $k1->_clone();
        $k2 = $k2->_clone();
        $d1 = 0;
        $d2 = 0;

        while( $k1->cmpn(-$d1) > 0 || $k2->cmpn(-$d2) > 0 )
        {
            // First phase
            $m14 = ($k1->andln(3) + $d1) & 3;
            $m24 = ($k2->andln(3) + $d2) & 3;
            if( $m14 === 3 )
                $m14 = -1;
            if( $m24 === 3 )
                $m24 = -1;

            $u1 = 0;
            if( ($m14 & 1) !== 0 )
            {
                $m8 = ($k1->andln(7) + $d1) & 7;
                $u1 = ( ($m8 === 3 || $m8 === 5) && $m24 === 2 ) ? -$m14 : $m14;
            }
            array_push($jsf[0], $u1);

            $u2 = 0;
            if( ($m24 & 1) !== 0 )
            {
                $m8 = ($k2->andln(7) + $d2) & 7;
                $u2 = ( ($m8 === 3 || $m8 === 5) && $m14 === 2 ) ? -$m24 : $m24;
            }
            array_push($jsf[1], $u2);

            // Second phase
            if( (2 * $d1) === ($u1 + 1) )
                $d1 = 1 - $d1;
            if( (2 * $d2) === ($u2 + 1) )
                $d2 = 1 - $d2;
            $k1->iushrn(1);
            $k2->iushrn(1);
        }

        return $jsf;
    }
public static function getJSF($k1, $k2)
    {
        $jsf = array( array(), array() );
        $k1 = $k1->_clone();
        $k2 = $k2->_clone();
        $d1 = 0;
        $d2 = 0;

        while( $k1->cmpn(-$d1) > 0 || $k2->cmpn(-$d2) > 0 )
        {
            // First phase
            $m14 = ($k1->andln(3) + $d1) & 3;
            $m24 = ($k2->andln(3) + $d2) & 3;
            if( $m14 === 3 )
                $m14 = -1;
            if( $m24 === 3 )
                $m24 = -1;

            $u1 = 0;
            if( ($m14 & 1) !== 0 )
            {
                $m8 = ($k1->andln(7) + $d1) & 7;
                $u1 = ( ($m8 === 3 || $m8 === 5) && $m24 === 2 ) ? -$m14 : $m14;
            }
            array_push($jsf[0], $u1);

            $u2 = 0;
            if( ($m24 & 1) !== 0 )
            {
                $m8 = ($k2->andln(7) + $d2) & 7;
                $u2 = ( ($m8 === 3 || $m8 === 5) && $m14 === 2 ) ? -$m24 : $m24;
            }
            array_push($jsf[1], $u2);

            // Second phase
            if( (2 * $d1) === ($u1 + 1) )
                $d1 = 1 - $d1;
            if( (2 * $d2) === ($u2 + 1) )
                $d2 = 1 - $d2;
            $k1->iushrn(1);
            $k2->iushrn(1);
        }

        return $jsf;
    }
public static function getJSF ( $ k1 , $ k2 ) { $ jsf = array ( array ( ) , array ( ) ) ; $ k1 = $ k1 -> _clone ( ) ; $ k2 = $ k2 -> _clone ( ) ; $ d1 = 0 ; $ d2 = 0 ; while ( $ k1 -> cmpn ( - $ d1 ) > 0 || $ k2 -> cmpn ( - $ d2 ) > 0 ) { // First phase $ m14 = ( $ k1 -> andln ( 3 ) + $ d1 ) & 3 ; $ m24 = ( $ k2 -> andln ( 3 ) + $ d2 ) & 3 ; if ( $ m14 === 3 ) $ m14 = - 1 ; if ( $ m24 === 3 ) $ m24 = - 1 ; $ u1 = 0 ; if ( ( $ m14 & 1 ) !== 0 ) { $ m8 = ( $ k1 -> andln ( 7 ) + $ d1 ) & 7 ; $ u1 = ( ( $ m8 === 3 || $ m8 === 5 ) && $ m24 === 2 ) ? - $ m14 : $ m14 ; } array_push ( $ jsf [ 0 ] , $ u1 ) ; $ u2 = 0 ; if ( ( $ m24 & 1 ) !== 0 ) { $ m8 = ( $ k2 -> andln ( 7 ) + $ d2 ) & 7 ; $ u2 = ( ( $ m8 === 3 || $ m8 === 5 ) && $ m14 === 2 ) ? - $ m24 : $ m24 ; } array_push ( $ jsf [ 1 ] , $ u2 ) ; // Second phase if ( ( 2 * $ d1 ) === ( $ u1 + 1 ) ) $ d1 = 1 - $ d1 ; if ( ( 2 * $ d2 ) === ( $ u2 + 1 ) ) $ d2 = 1 - $ d2 ; $ k1 -> iushrn ( 1 ) ; $ k2 -> iushrn ( 1 ) ; } return $ jsf ; }
Represent k1, k2 in a Joint Sparse Form
Represent k1 k2 in a Joint Sparse Form