flash on 2014-7-2
♥0 |
Line 65 |
Modified 2014-07-02 10:34:24 |
MIT License
archived:2017-03-20 03:18:25
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);
}
}