flash on 2014-7-2

by tepe
♥0 | Line 65 | Modified 2014-07-02 10:34:24 | MIT License
play

ActionScript3 source code

/**
 * Copyright tepe ( http://wonderfl.net/user/tepe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/vW47
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            // write as3 code here..
        }
    }
}

 
import flash.utils.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;

class Karatsuba{
    
    private const D_MAX:int = 1024;
    private const D:int = 1024;
    
    private var A:Vector.<int> = new Vector(D,true).<int>;//被乗算配列
    private var B:Vector.<int> = new Vector(D,true).<int>;//乗算配列
    
    private var cnt_mul:int;
    private var t1:Date;
    private var t2:Date;
    
    private var tt:Number;

    
    public function calc():void{
        for(var i:int=0;i<D;i++){
            A[i] = Math.floor(Math.random()*10);
            B[i] = Math.floor(Math.random()*10);
        }
    }
    
    public function karatsuba():void{
        var a:Vector.<int> = new Vector(D_MAX,true).<int>;
        var b:Vector.<int> = new Vector(D_MAX,true).<int>;
        var d2:int = D_MAX*6;
        var z:Vector.<int> = new Vector(d2,true).<int>;
        var i:int;
        
        t1 = new Date();
        for(var l:int=0;l<1000;l++){
            cnt_mul = 0;
            
            for(i=D;i<D_MAX;i++){//パティング
                a[i] = 0;
                b[i] = 0;
            }
            //multiplykarasutsuba(a,b,D_MAX,z);
            //doCarry(z,D_MAX*2);
            
        }
        t2 = new Date();
        tt = (t2.time - t1.time);
        
        //display(a,b,z);
    }
    private function multiplynormal(a:Vector.<int>,b:Vector.<int>,tLen:int,z:Vector.<int>):void{
        
        var obj:Object = new Object();
        obj.a0 = a[0];
        obj.a1 = a[tLen/2];
        obj.b0 = b[0];
        obj.b1 = b[tLen/2];
        obj.v = z[tLen*5];
        obj.w = z[tLen*5 + tLen/2];
        obj.x1 = z[tLen * 0];
        obj.x2 = z[tLen * 1];
        obj.x3 = z[tLen * 2];
        var i:int;
        
        if(tLen <= 4){
            multiplynormal(a,b,tLen,z);
            return;
        }
        
        for(i=0;i<tLen/2;i++){
            obj.v[i]= obj.a1[i] + obj.a0[i];
            obj.w[i]= obj.b1[i] + obj.b0[i];
            
        }
        
        //multiplyKaratsuba(obj.a0, obj.b0, tLen / 2, obj.x1);


        
        
    }


}