1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162# 1 "src/owl/sparse/owl_sparse_matrix_c.ml"(*
* OWL - an OCaml numerical library for scientific computing
* Copyright (c) 2016-2018 Liang Wang <liang.wang@cl.cam.ac.uk>
*)(** [ Complex sparse matrix ]
The default format is compressed row storage (CRS).
*)openBigarraymoduleM=Owl_sparse_matrix_genericincludeMtypeelt=Complex.ttypemat=(Complex.t,Bigarray.complex32_elt)Owl_sparse_matrix_generic.t(* overload functions in Owl_sparse_matrix *)letzerosmn=M.zerosComplex32mnletonesmn=M.onesComplex32mnleteyem=M.eyeComplex32mletbinarymn=M.binaryComplex32mnletuniform?(scale=1.)mn=M.uniform~scaleComplex32mnletsequentialmn=M.sequentialComplex32mnletpermutation_matrixm=M.permutation_matrixComplex32mletof_arraymnx=M.of_arrayComplex32mnxletloadf=M.loadComplex32f(* specific functions for complex32 matrix *)let_random_basicfmn=letc=int_of_float((float_of_int(m*n))*.0.15)inletx=M.zeros~density:0.2Complex32mninletl=Owl_stats.choose(Array.init(m*n)(funi->i))cinfork=0toc-1doleti=l.(k)/ninletj=l.(k)-(i*n)ininsertxij(f())done;xletuniform_int?(a=1)?(b=99)mn=_random_basic(fun()->letre=Owl_stats.uniform_int_rvs~a~b|>float_of_intinletim=Owl_stats.uniform_int_rvs~a~b|>float_of_intinComplex.({re;im}))mn(** ends here *)