123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106(*
* Eigen - an OCaml interface to C++ Eigen library
* Copyright (c) 2016-2020 Liang Wang <liang.wang@cl.cam.ac.uk>
*)openCtypesopenEigen_types.DSMAT_Zletcreatemn=letx=ml_eigen_new(Int64.of_intm)(Int64.of_intn)inGc.finaliseml_eigen_deletex;xletdeletex=ml_eigen_deletexletzerosmn=letx=ml_eigen_zeros(Int64.of_intm)(Int64.of_intn)inGc.finaliseml_eigen_deletex;xletonesmn=letx=ml_eigen_ones(Int64.of_intm)(Int64.of_intn)inGc.finaliseml_eigen_deletex;xleteyem=letx=ml_eigen_eye(Int64.of_intm)inGc.finaliseml_eigen_deletex;xletrowsx=ml_eigen_rowsx|>Int64.to_intletcolsx=ml_eigen_colsx|>Int64.to_intletgetxij=ml_eigen_getx(Int64.of_inti)(Int64.of_intj)letsetxija=ml_eigen_setx(Int64.of_inti)(Int64.of_intj)aletdatax=ml_eigen_dataxletto_bigarrayx=bigarray_of_ptrarray2(rowsx,colsx)Bigarray.complex64(datax)letprintx=ml_eigen_printxletgemmxy=letx_ptr=Ctypes.bigarray_startCtypes_static.Array2xinletxm=Bigarray.Array2.dim1x|>Int64.of_intinletxn=Bigarray.Array2.dim2x|>Int64.of_intinlety_ptr=Ctypes.bigarray_startCtypes_static.Array2yinletym=Bigarray.Array2.dim1y|>Int64.of_intinletyn=Bigarray.Array2.dim2y|>Int64.of_intinletz=ml_eigen_gemmx_ptrxmxny_ptrymyninGc.finaliseml_eigen_deletez;to_bigarrayzlettransposex=letx_ptr=Ctypes.bigarray_startCtypes_static.Array2xinletm=Bigarray.Array2.dim1xinletn=Bigarray.Array2.dim2xinletxm=Int64.of_intminletxn=Int64.of_intninlety=ml_eigen_transposex_ptrxmxninGc.finaliseml_eigen_deletey;to_bigarrayyletswap_rowsxij=letptr=Ctypes.bigarray_startCtypes_static.Array2xinletm=Bigarray.Array2.dim1x|>Int64.of_intinletn=Bigarray.Array2.dim2x|>Int64.of_intinleti=Int64.of_intiinletj=Int64.of_intjinlet_=ml_eigen_swap_rowsptrmnijin()letswap_colsxij=letptr=Ctypes.bigarray_startCtypes_static.Array2xinletm=Bigarray.Array2.dim1x|>Int64.of_intinletn=Bigarray.Array2.dim2x|>Int64.of_intinleti=Int64.of_intiinletj=Int64.of_intjinlet_=ml_eigen_swap_colsptrmnijin()letrowwise_opopxy=letx_ptr=Ctypes.bigarray_startCtypes_static.Array2xinlety_ptr=Ctypes.bigarray_startCtypes_static.Array2yinletm=Bigarray.Array2.dim1x|>Int64.of_intinletn=Bigarray.Array2.dim2x|>Int64.of_intinlet_=ml_eigen_rowwise_opopx_ptrmny_ptrin()letcolwise_opopxy=letx_ptr=Ctypes.bigarray_startCtypes_static.Array2xinlety_ptr=Ctypes.bigarray_startCtypes_static.Array2yinletm=Bigarray.Array2.dim1x|>Int64.of_intinletn=Bigarray.Array2.dim2x|>Int64.of_intinlet_=ml_eigen_colwise_opopx_ptrmny_ptrin()letinvx=letx_ptr=Ctypes.bigarray_startCtypes_static.Array2xinletxm=Bigarray.Array2.dim1x|>Int64.of_intinletxn=Bigarray.Array2.dim2x|>Int64.of_intinletz=ml_eigen_invx_ptrxmxninGc.finaliseml_eigen_deletez;to_bigarrayz