Skip to content

Commit

Permalink
#1300 Replaced occurences of GenericMatrix::size
Browse files Browse the repository at this point in the history
  • Loading branch information
jaeandersson committed Jan 24, 2015
1 parent a5e8b70 commit bb97321
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 45 deletions.
2 changes: 1 addition & 1 deletion swig/casadi.i
Expand Up @@ -899,7 +899,7 @@ class NZproxy:
return self.matrix.setNZ(val, False, s)

def __len__(self):
return self.matrix.size()
return self.matrix.nnz()

def __iter__(self):
for k in range(len(self)):
Expand Down
10 changes: 5 additions & 5 deletions swig/matrix.i
Expand Up @@ -292,7 +292,7 @@ PyObject* arrayView() {
def __float__(self):
if self.numel()!=1:
raise Exception("Only a scalar can be cast to a float")
if self.size()==0:
if self.nnz()==0:
return 0.0
return self.toScalar()
%}
Expand All @@ -301,7 +301,7 @@ PyObject* arrayView() {
def __int__(self):
if self.numel()!=1:
raise Exception("Only a scalar can be cast to an int")
if self.size()==0:
if self.nnz()==0:
return 0
return int(self.toScalar())
%}
Expand All @@ -310,7 +310,7 @@ PyObject* arrayView() {
def __nonzero__(self):
if self.numel()!=1:
raise Exception("Only a scalar can be cast to a float")
if self.size()==0:
if self.nnz()==0:
return 0
return self.toScalar()!=0
%}
Expand Down Expand Up @@ -347,7 +347,7 @@ binopsFull(const casadi::MX & b,,casadi::MX,casadi::MX)
def __float__(self):
if self.numel()!=1:
raise Exception("Only a scalar can be cast to a float")
if self.size()==0:
if self.nnz()==0:
return 0.0
return float(self.toScalar())
%}
Expand All @@ -356,7 +356,7 @@ binopsFull(const casadi::MX & b,,casadi::MX,casadi::MX)
def __int__(self):
if self.numel()!=1:
raise Exception("Only a scalar can be cast to an int")
if self.size()==0:
if self.nnz()==0:
return 0
return self.toScalar()
%}
Expand Down
18 changes: 9 additions & 9 deletions test/python/ad.py
Expand Up @@ -530,7 +530,7 @@ def remove_first(x):

def remove_last(x):
ret = DMatrix(x)
if ret.size()>0:
if ret.nnz()>0:
ret[ret.sparsity().row()[-1],ret.sparsity().getCol()[-1]] = DMatrix.sparse(1,1)
return ret
else:
Expand Down Expand Up @@ -659,8 +659,8 @@ def vec(l):
d.setInput(v,i)
for d in range(ndir):
f.setInput(DMatrix(inputs[0].sparsity(),random.random(inputs[0].size())),num_in+d*num_in + d)
f.setAdjSeed(DMatrix(out.sparsity(),random.random(out.size())),num_in+d*num_in + 0)
f.setInput(DMatrix(inputs[0].sparsity(),random.random(inputs[0].nnz())),num_in+d*num_in + d)
f.setAdjSeed(DMatrix(out.sparsity(),random.random(out.nnz())),num_in+d*num_in + 0)
f.setFwdSeed(0,1,d)
f.setAdjSeed(0,1,d)
Expand Down Expand Up @@ -691,8 +691,8 @@ def vec(l):
with internalAPI():
res,fwdsens,adjsens = f.callDerivative(inputss,fseeds,aseeds,True)

fseed = [DMatrix(fseeds[d][0].sparsity(),random.random(fseeds[d][0].size())) for d in range(ndir) ]
aseed = [DMatrix(aseeds[d][0].sparsity(),random.random(aseeds[d][0].size())) for d in range(ndir) ]
fseed = [DMatrix(fseeds[d][0].sparsity(),random.random(fseeds[d][0].nnz())) for d in range(ndir) ]
aseed = [DMatrix(aseeds[d][0].sparsity(),random.random(aseeds[d][0].nnz())) for d in range(ndir) ]
vf = Function(inputss+vec([fseeds[i]+aseeds[i] for i in range(ndir)]),list(res) + vec([list(fwdsens[i])+list(adjsens[i]) for i in range(ndir)]))

vf.init()
Expand Down Expand Up @@ -735,7 +735,7 @@ def vec(l):
# Complete random seeding
random.seed(1)
for i in range(vf.getNumInputs()):
vf.setInput(DMatrix(vf.input(i).sparsity(),random.random(vf.input(i).size())),i)
vf.setInput(DMatrix(vf.input(i).sparsity(),random.random(vf.input(i).nnz())),i)

vf.evaluate()
storagekey = (spmod,spmod2)
Expand Down Expand Up @@ -767,7 +767,7 @@ def vec(l):

random.seed(1)
for i in range(vf2.getNumInputs()):
vf2.setInput(DMatrix(vf2.input(i).sparsity(),random.random(vf2.input(i).size())),i)
vf2.setInput(DMatrix(vf2.input(i).sparsity(),random.random(vf2.input(i).nnz())),i)

vf2.evaluate()
storagekey = (spmod,spmod2)
Expand All @@ -780,8 +780,8 @@ def vec(l):
for stk,st in store.items():
for i in range(len(st)-1):
for k,(a,b) in enumerate(zip(st[0],st[i+1])):
if b.numel()==0 and sparsify(a).size()==0: continue
if a.numel()==0 and sparsify(b).size()==0: continue
if b.numel()==0 and sparsify(a).nnz()==0: continue
if a.numel()==0 and sparsify(b).nnz()==0: continue
self.checkarray(sparsify(a),sparsify(b),("%s, output(%d)" % (order,k))+str(vf2.getInput(0)))

for f in [fun.expand(),fun]:
Expand Down
6 changes: 3 additions & 3 deletions test/python/function.py
Expand Up @@ -253,7 +253,7 @@ def test_jacobians(self):

x = SX.sym("x")

self.assertEqual(jacobian(5,x).size(),0)
self.assertEqual(jacobian(5,x).nnz(),0)


def test(sp):
Expand Down Expand Up @@ -1020,7 +1020,7 @@ def test_setjacsparsity(self):
J.init()
J.evaluate()

self.assertEqual(J.output().size(),4)
self.assertEqual(J.output().nnz(),4)

f = MXFunction([x],[x])
f.init()
Expand All @@ -1030,7 +1030,7 @@ def test_setjacsparsity(self):
J.init()
J.evaluate()

self.assertEqual(J.output().size(),16)
self.assertEqual(J.output().nnz(),16)

def test_setjacobian(self):
x = MX.sym("x")
Expand Down
12 changes: 6 additions & 6 deletions test/python/helpers.py
Expand Up @@ -137,7 +137,7 @@ def randDMatrix(self,n,m=1,sparsity=1,valuegenerator=lambda : random.normal(0,1)
spp = self.randDMatrix(n,m,sparsity=1,valuegenerator=lambda : random.uniform(0,1) ,symm=symm)
spm = (spp < sparsity)
spm = sparsify(spm)
ret = DMatrix(spm.sparsity(),[valuegenerator() for i in range(spm.size())])
ret = DMatrix(spm.sparsity(),[valuegenerator() for i in range(spm.nnz())])
if symm:
return (ret + ret.T)/2
else:
Expand Down Expand Up @@ -423,7 +423,7 @@ def remove_first(x):

def remove_last(x):
ret = DMatrix(x)
if ret.size()>0:
if ret.nnz()>0:
ret[ret.sparsity().row()[-1],ret.sparsity().getCol()[-1]] = DMatrix.sparse(1,1)
return ret
else:
Expand Down Expand Up @@ -469,7 +469,7 @@ def vec(l):
# Complete random seeding
random.seed(1)
for i in range(f.getNumInputs(),vf.getNumInputs()):
vf.setInput(DMatrix(vf.getInput(i).sparsity(),random.random(vf.getInput(i).size())),i)
vf.setInput(DMatrix(vf.getInput(i).sparsity(),random.random(vf.getInput(i).nnz())),i)

vf.evaluate()
storagekey = (spmod,spmod2)
Expand Down Expand Up @@ -499,7 +499,7 @@ def vec(l):

random.seed(1)
for i in range(f.getNumInputs(),vf2.getNumInputs()):
vf2.setInput(DMatrix(vf2.getInput(i).sparsity(),random.random(vf2.getInput(i).size())),i)
vf2.setInput(DMatrix(vf2.getInput(i).sparsity(),random.random(vf2.getInput(i).nnz())),i)

vf2.evaluate()
storagekey = (spmod,spmod2)
Expand All @@ -512,8 +512,8 @@ def vec(l):
for stk,st in store.items():
for i in range(len(st)-1):
for k,(a,b) in enumerate(zip(st[0],st[i+1])):
if b.numel()==0 and sparsify(a).size()==0: continue
if a.numel()==0 and sparsify(b).size()==0: continue
if b.numel()==0 and sparsify(a).nnz()==0: continue
if a.numel()==0 and sparsify(b).nnz()==0: continue
#self.checkarray(IMatrix(a.sparsity(),1),IMatrix(b.sparsity(),1),("%s, output(%d)" % (order,k))+str(vf.getInput(0))+failmessage,digits=digits_sens)
self.checkarray(a,b,("%s, output(%d)" % (order,k))+str(vf.getInput(0))+failmessage,digits=digits_sens)

Expand Down
14 changes: 7 additions & 7 deletions test/python/ocp.py
Expand Up @@ -60,8 +60,8 @@ def testdiscrete(self):
solver.setOption("max_iter",100)
solver.setOption("print_level",0)
solver.init()
solver.setInput([-1000 for i in range(V.size())],"lbx")
solver.setInput([1000 for i in range(V.size())],"ubx")
solver.setInput([-1000 for i in range(V.nnz())],"lbx")
solver.setInput([1000 for i in range(V.nnz())],"ubx")
solver.setInput([0 for i in range(N+1)],"lbg")
solver.setInput([0 for i in range(N+1)],"ubg")
solver.evaluate()
Expand Down Expand Up @@ -209,16 +209,16 @@ def test_XML(self):
self.assertEqual(ocp.tf,150)
#self.assertFalse(ocp.t0_free)
#self.assertFalse(ocp.tf_free)
self.assertTrue(ocp.lterm.size()==0)
self.assertTrue(ocp.mterm.size()==1)
self.assertTrue(ocp.lterm.nnz()==0)
self.assertTrue(ocp.mterm.nnz()==1)
m = ocp.mterm
self.assertTrue(isinstance(m,SX))
self.assertTrue(isinstance(ocp.t,SX))
self.assertEquals(str(m),'cost')
print dir(ocp)
self.assertEquals(ocp.dae.size(),3)
self.assertEquals(ocp.dae.nnz(),3)
print type(ocp.s)
self.assertEquals(ocp.s.size(),3) # there are three states
self.assertEquals(ocp.s.nnz(),3) # there are three states
c = ocp("cstr.c")
T = ocp("cstr.T")
cost = ocp("cost")
Expand All @@ -230,7 +230,7 @@ def test_XML(self):
self.assertEquals(ocp.nominal("cstr.c"),1000)

u = ocp("u")
self.assertEquals(ocp.path.size(),3)
self.assertEquals(ocp.path.nnz(),3)
#self.assertEquals(len(ocp.cfcn_lb),3)
#self.assertEquals(len(ocp.cfcn_ub),3)
#self.assertTrue(ocp.cfcn[0].isEqual(T))
Expand Down
12 changes: 6 additions & 6 deletions test/python/typemaps.py
Expand Up @@ -262,12 +262,12 @@ def doit(z,s,fun):

f=function([z],[r])
f.init()
f.setInput(dummy[0:f.input().size()])
f.setInput(dummy[0:f.input().nnz()])
f.evaluate()

f_=function([z],[z])
f_.init()
f_.setInput(dummy[0:f.input().size()])
f_.setInput(dummy[0:f.input().nnz()])
f_.evaluate()


Expand All @@ -278,14 +278,14 @@ def doit(z,s,fun):

f=function([z,s],[r])
f.init()
f.setInput(dummy[0:f.input(0).size()],0)
f.setInput(dummy2[0:f.input(1).size()],1)
f.setInput(dummy[0:f.input(0).nnz()],0)
f.setInput(dummy2[0:f.input(1).nnz()],1)
f.evaluate()

f_=function([z,s],[z,s])
f_.init()
f_.setInput(dummy[0:f.input(0).size()],0)
f_.setInput(dummy2[0:f.input(1).size()],1)
f_.setInput(dummy[0:f.input(0).nnz()],0)
f_.setInput(dummy2[0:f.input(1).nnz()],1)
f_.evaluate()

self.checkarray(fun(f_.getOutput(0),f_.getOutput(1)),f.getOutput(),"operation"+str(f_.getOutput(0))+","+str(f_.getOutput(1))+":"+str(f.getOutput()))
Expand Down
12 changes: 6 additions & 6 deletions test/python/typemaps_futurediv.py
Expand Up @@ -172,12 +172,12 @@ def doit(z,s,fun):

f=function([z],[r])
f.init()
f.setInput(dummy[0:f.input().size()])
f.setInput(dummy[0:f.input().nnz()])
f.evaluate()

f_=function([z],[z])
f_.init()
f_.setInput(dummy[0:f.input().size()])
f_.setInput(dummy[0:f.input().nnz()])
f_.evaluate()


Expand All @@ -188,14 +188,14 @@ def doit(z,s,fun):

f=function([z,s],[r])
f.init()
f.setInput(dummy[0:f.input(0).size()],0)
f.setInput(dummy2[0:f.input(1).size()],1)
f.setInput(dummy[0:f.input(0).nnz()],0)
f.setInput(dummy2[0:f.input(1).nnz()],1)
f.evaluate()

f_=function([z,s],[z,s])
f_.init()
f_.setInput(dummy[0:f.input(0).size()],0)
f_.setInput(dummy2[0:f.input(1).size()],1)
f_.setInput(dummy[0:f.input(0).nnz()],0)
f_.setInput(dummy2[0:f.input(1).nnz()],1)
f_.evaluate()

self.checkarray(fun(f_.getOutput(0),f_.getOutput(1)),f.getOutput(),"operation")
Expand Down
4 changes: 2 additions & 2 deletions test/python/unsorted/speed.py
Expand Up @@ -148,11 +148,11 @@
print "durations for operations: ", dur_operation
print "number of non-zeros for the last matrix: ",
if sol=="casadi":
print M.size()
print M.nnz()
else:
print M.getnnz()


M2_C_S = csr_matrix((M2_C.data(),M2_C.col(),M2_C.rowind()),(M2_C.size1(),M2_C.size2()),dtype=float)
M2_DIFF = M2_C_S-M2_S
print "difference is ", repr(M2_DIFF)
print "difference is ", repr(M2_DIFF)

1 comment on commit bb97321

@casadibot
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found BROKEN by quick.
olver_cplex.dir/cplex_interface.cpp.o
Linking CXX shared library ../../../lib/libcasadi_nlpsolver_ipopt.so
[ 75%] Built target casadi_nlpsolver_ipopt
Scanning dependencies of target casadi_linearsolver_csparse
[ 75%] Building CXX object casadi/interfaces/csparse/CMakeFiles/casadi_linearsolver_csparse.dir/csparse_interface.cpp.o
Scanning dependencies of target casadi_linearsolver_csparsecholesky
[ 75%] Building CXX object casadi/interfaces/csparse/CMakeFiles/casadi_linearsolver_csparsecholesky.dir/csparse_cholesky_internal.cpp.o
[ 75%] Building CXX object casadi/interfaces/cplex/CMakeFiles/casadi_qpsolver_cplex.dir/cplex_interface_meta.cpp.o
Linking CXX shared library ../../../lib/libcasadi_nlpsolver_knitro.so
[ 75%] Built target casadi_nlpsolver_knitro
Scanning dependencies of target casadi_sdpsolver_dsdp
[ 75%] [ 75%] Building CXX object casadi/interfaces/csparse/CMakeFiles/casadi_linearsolver_csparse.dir/csparse_interface_meta.cpp.o
Building CXX object casadi/interfaces/dsdp/CMakeFiles/casadi_sdpsolver_dsdp.dir/dsdp_interface.cpp.o
Linking CXX shared library ../../../lib/libcasadi_qpsolver_cplex.so
[ 75%] Built target casadi_qpsolver_cplex
Scanning dependencies of target casadi_qpsolver_ooqp
[ 75%] Building CXX object casadi/interfaces/ooqp/CMakeFiles/casadi_qpsolver_ooqp.dir/ooqp_interface.cpp.o
[ 76%] Building CXX object casadi/interfaces/csparse/CMakeFiles/casadi_linearsolver_csparsecholesky.dir/csparse_cholesky_internal_meta.cpp.o
Linking CXX shared library ../../../lib/libcasadi_linearsolver_csparse.so
[ 76%] Built target casadi_linearsolver_csparse
[ 76%] Building CXX object casadi/interfaces/ooqp/CMakeFiles/casadi_qpsolver_ooqp.dir/ooqp_interface_meta.cpp.o
Linking CXX shared library ../../../lib/libcasadi_linearsolver_csparsecholesky.so
[ 76%] Built target casadi_linearsolver_csparsecholesky
Scanning dependencies of target casadi_nlpsolver_worhp
[ 76%] Building CXX object casadi/interfaces/worhp/CMakeFiles/casadi_nlpsolver_worhp.dir/worhp_interface.cpp.o
[ 76%] Building CXX object casadi/interfaces/dsdp/CMakeFiles/casadi_sdpsolver_dsdp.dir/dsdp_interface_meta.cpp.o
Scanning dependencies of target casadi_nlpsolver_snopt
[ 78%] Building CXX object casadi/interfaces/snopt/CMakeFiles/casadi_nlpsolver_snopt.dir/snopt_interface.cpp.o
Linking CXX shared library ../../../lib/libcasadi_sdpsolver_dsdp.so
Linking CXX shared library ../../../lib/libcasadi_qpsolver_ooqp.so
[ 78%] Built target casadi_sdpsolver_dsdp
[ 78%] Building CXX object casadi/interfaces/worhp/CMakeFiles/casadi_nlpsolver_worhp.dir/worhp_interface_meta.cpp.o
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/snopt/snopt_interface.cpp: In member function ‘virtual void casadi::SnoptInterface::init()’:
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/snopt/snopt_interface.cpp:417:17: error: ‘sparse’ was not declared in this scope
d = sparse(d);
^
[ 78%] Built target casadi_qpsolver_ooqp
Scanning dependencies of target casadi_dplesolver_slicot
[ 78%] Building CXX object casadi/interfaces/slicot/CMakeFiles/casadi_dplesolver_slicot.dir/psd_indef_dple_internal.cpp.o
make[2]: *** [casadi/interfaces/snopt/CMakeFiles/casadi_nlpsolver_snopt.dir/snopt_interface.cpp.o] Error 1
make[1]: *** [casadi/interfaces/snopt/CMakeFiles/casadi_nlpsolver_snopt.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 78%] Building CXX object casadi/interfaces/slicot/CMakeFiles/casadi_dplesolver_slicot.dir/psd_indef_dple_internal_meta.cpp.o
In file included from /home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/psd_indef_dple_internal.hpp:30:0,
from /home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/psd_indef_dple_internal.cpp:26:
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/../../core/function/dense_io.hpp: In instantiation of ‘void casadi::DenseIO::init() [with Derived = casadi::PsdIndefDpleInternal]’:
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/psd_indef_dple_internal.cpp:109:14: required from here
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/../../core/function/dense_io.hpp:73:43: error: ‘dense’ was not declared in this scope
dense_inputs_[i] = dense(d->input(i));
^
/home/casadibot/slaves/linuxbot/quick/source/casadi/interfaces/slicot/../../core/function/dense_io.hpp:78:45: error: ‘dense’ was not declared in this scope
dense_outputs_[i] = dense(d->output(i));
^
make[2]: *** [casadi/interfaces/slicot/CMakeFiles/casadi_dplesolver_slicot.dir/psd_indef_dple_internal.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [casadi/interfaces/slicot/CMakeFiles/casadi_dplesolver_slicot.dir/all] Error 2
Linking CXX shared library ../../../lib/libcasadi_nlpsolver_worhp.so
[ 78%] Built target casadi_nlpsolver_worhp
make: *** [all] Error 2

Please sign in to comment.