123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118# 1 "src/base/core/owl_exception.ml"(*
* OWL - OCaml Scientific and Engineering Computing
* Copyright (c) 2016-2020 Liang Wang <liang.wang@cl.cam.ac.uk>
*)(* Exception definition *)exceptionCONV_INVALID_ARGUMENTexceptionNOT_IMPLEMENTEDofstringexceptionNOT_SUPPORTEDexceptionFOUNDexceptionNOT_FOUNDexceptionEMPTY_ARRAYexceptionTEST_FAILexceptionINVALID_ARGUMENTofstringexceptionINVALID_PROBABILITYoffloatexceptionLINALG_MATRIX_DOT_SHAPEof(int*int*int*int)exceptionNOT_SQUAREofintarrayexceptionNOT_MATRIXofintarrayexceptionNON_NEGATIVE_INTofintexceptionDIFFERENT_SHAPEof(intarray*intarray)exceptionDIFFERENT_SIZEof(int*int)exceptionNOT_BROADCASTABLEexceptionNOT_CONVERGEexceptionMAX_ITERATIONexceptionSINGULARexceptionNOT_SIMPLEXexceptionINDEX_OUT_OF_BOUNDexceptionZOO_ILLEGAL_GIST_NAME(* Core functions *)letcheckpe=ifp=falsethenraiseeletverifypf=ifp=falsethenraise(f())letdifferent_shapesxsy=letprefix="Owl_exception.DIFFERENT_SHAPE:"inlets0=Array.to_listsx|>List.mapstring_of_int|>String.concat","inlets1=Array.to_listsy|>List.mapstring_of_int|>String.concat","inPrintf.sprintf"%s [ %s ] and [ %s ] are different shapes."prefixs0s1letdifferent_sizemn=letprefix="Owl_exception.DIFFERENT_SIZE:"inPrintf.sprintf"%s %i is not equal to %i."prefixmnletinvalid_arguments=letprefix="Owl_exception.INVALID_ARGUMENT:"inPrintf.sprintf"%s %s"prefixsletinvalid_probabilityp=letprefix="Owl_exception.INVALID_PROBABILITY:"inPrintf.sprintf"%s %g is not a valid probability, it should be within [0,1]."prefixpletlinalg_matrix_dot_shapecombined_shape=letxm,xn,ym,yn=combined_shapeinletprefix="Owl_exception.LINALG_MATRIX_DOT_SHAPE:"inPrintf.sprintf"%s x[%i,%i] *@ y[%i,%i] is invalid."prefixxmxnymynletnon_negative_inti=letprefix="Owl_exception.NON_NEGATIVE_INT:"inPrintf.sprintf"%s input should be non-negative, but %i is negative."prefixiletnot_implementeds=letprefix="Owl_exception.NOT_IMPLEMENTED:"inPrintf.sprintf"%s %s is not implemented."prefixsletnot_squarex=letprefix="Owl_exception.NOT_SQUARE:"inlets=Array.to_listx|>List.mapstring_of_int|>String.concat","inPrintf.sprintf"%s matrix [ %s ] is not square."prefixsletto_string=function|DIFFERENT_SHAPE(sx,sy)->different_shapesxsy|DIFFERENT_SIZE(m,n)->different_sizemn|INVALID_ARGUMENTs->invalid_arguments|INVALID_PROBABILITYp->invalid_probabilityp|LINALG_MATRIX_DOT_SHAPEs->linalg_matrix_dot_shapes|NON_NEGATIVE_INTi->non_negative_inti|NOT_IMPLEMENTEDs->not_implementeds|NOT_SQUAREx->not_squarex|other->Printexc.to_stringotherletpp_exceptionformatterx=Format.open_box0;Format.fprintfformatter"%s"(to_stringx);Format.close_box()