summaryrefslogtreecommitdiff
path: root/js/NonLinear/PRODUCT.js
blob: 9826081998dd79f9ef48e80b109ccf0f191d25fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/* autogenerated from "macros/NonLinear/PRODUCT.sci" */
function PRODUCT() {
    PRODUCT.prototype.define = function PRODUCT() {
        this.sgn = [[1],[-1]];
        this.model = scicos_model();
        this.model.sim = list(new ScilabString(["product"]), new ScilabDouble([4]));
        this.model.in = new ScilabDouble([-1],[-1]);
        this.model.out = new ScilabDouble([-1]);
        this.model.ipar = new ScilabDouble(this.sgn);
        this.model.blocktype = new ScilabString(["c"]);
        this.model.dep_ut = new ScilabBoolean([true,false]);
        var exprs = sci2exp(this.sgn);
        var gr_i = new ScilabString(["xstringb(orig(1),orig(2),\"PRODUCT\",sz(1),sz(2));"]);
        this.x = new standard_define(new ScilabDouble([2,3]),this.model,new ScilabString([exprs]),gr_i);
        return new Product(this.x);
    }
    PRODUCT.prototype.details = function PRODUCT() {
        return this.x;
    }
    PRODUCT.prototype.get = function PRODUCT() {
        var exprs = this.graphics.exprs;
        this.set_param_popup_title = "         Set multiplication block parameters";
        var options = {
            sgn:["Number of inputs or sign vector",this.sgn.toString().replace(/,/g," ")],
        }
        return options;
    }
    PRODUCT.prototype.set = function PRODUCT() {
        var exprs = this.graphics.exprs;
        while (true) {
            var ok = true;
            this.sgn = inverse(arguments[0]["sgn"]);
            var exprs = [arguments[0]["sgn"]];
            if (!ok) {
                break;
            }
            this.sgn = this.sgn.slice();
            if (size(this.sgn,1)==1) {
                if (this.sgn<1) {
                    message("Number of inputs must be > 0");
                    throw "user error";
                    var ok = false;
                } else if (this.sgn==1) {
                    var in1 = -1;
                    this.sgn = [];
                    var nout = 1;
                } else {
                    var in1 = -ones(this.sgn,1);
                    this.sgn = ones(this.sgn,1);
                    var nout = -1;
                }
            } else {
                if (!and(abs(this.sgn)==1)) {
                    message("Signs can only be +1 or -1");
                    throw "user error";
                    var ok = false;
                } else {
                    var in1 = -ones(size(this.sgn,1),1);
                    var nout = -1;
                }
            }
            if (ok) {
                var tmpvar0 = check_io(this.model,this.graphics,in1,nout,[],[]);
                this.model = tmpvar0[0];
                this.graphics = tmpvar0[1];
                var ok = tmpvar0[2];
            }
            if (ok) {
                this.model.ipar = new ScilabDouble([this.sgn]);
                this.graphics.exprs = new ScilabDouble([exprs]);
                this.x.graphics = this.graphics;
                this.x.model = this.model;
                break;
            }
        }
        return new Product(this.x);
    }
    PRODUCT.prototype.get_popup_title = function PRODUCT() {
        return this.set_param_popup_title;
    }
}