diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 8eaedb7..0000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# Documentation: https://github.com/JuliaCI/Appveyor.jl
-environment:
- matrix:
- - julia_version: 1.6
- - julia_version: 1.9
- - julia_version: nightly
-platform:
- - x64
- - x86
-cache:
- - '%USERPROFILE%\.julia\artifacts'
-matrix:
- allow_failures:
- - julia_version: nightly
-branches:
- only:
- - main
- - /release-.*/
-notifications:
- - provider: Email
- on_build_success: false
- on_build_failure: false
- on_build_status_changed: false
-install:
- - ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
-build_script:
- - echo "%JL_BUILD_SCRIPT%"
- - C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%"
-test_script:
- - echo "%JL_TEST_SCRIPT%"
- - C:\julia\bin\julia -e "%JL_TEST_SCRIPT%"
-on_success:
- - echo "%JL_CODECOV_SCRIPT%"
- - C:\julia\bin\julia -e "%JL_CODECOV_SCRIPT%"
diff --git a/.cirrus.yml b/.cirrus.yml
index 38facc4..c9389a1 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,32 +1,32 @@
-task:
- matrix:
- - name: FreeBSD
- freebsd_instance:
- image_family: freebsd-13-2
- env:
- matrix:
- - JULIA_VERSION: 1.6
- - JULIA_VERSION: 1
- - name: MacOS M1
- macos_instance:
- image: ghcr.io/cirruslabs/macos-monterey-base:latest
- env:
- - JULIA_VERSION: 1
- install_script: |
- URL="https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh"
- set -x
- if [ "$(uname -s)" = "Linux" ] && command -v apt; then
- apt update
- apt install -y curl
- fi
- if command -v curl; then
- sh -c "$(curl ${URL})"
- elif command -v wget; then
- sh -c "$(wget ${URL} -q -O-)"
- elif command -v fetch; then
- sh -c "$(fetch ${URL} -o -)"
- fi
- build_script:
- - cirrusjl build
- test_script:
- - cirrusjl test
+# task:
+# matrix:
+# - name: FreeBSD
+# freebsd_instance:
+# image_family: freebsd-13-2
+# env:
+# matrix:
+# - JULIA_VERSION: 1.6
+# - JULIA_VERSION: 1
+# - name: MacOS M1
+# macos_instance:
+# image: ghcr.io/cirruslabs/macos-monterey-base:latest
+# env:
+# - JULIA_VERSION: 1
+# install_script: |
+# URL="https://raw.githubusercontent.com/ararslan/CirrusCI.jl/master/bin/install.sh"
+# set -x
+# if [ "$(uname -s)" = "Linux" ] && command -v apt; then
+# apt update
+# apt install -y curl
+# fi
+# if command -v curl; then
+# sh -c "$(curl ${URL})"
+# elif command -v wget; then
+# sh -c "$(wget ${URL} -q -O-)"
+# elif command -v fetch; then
+# sh -c "$(fetch ${URL} -o -)"
+# fi
+# build_script:
+# - cirrusjl build
+# test_script:
+# - cirrusjl test
diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md
deleted file mode 100644
index 1f699f3..0000000
--- a/.github/actions/spelling/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# check-spelling/check-spelling configuration
-
-File | Purpose | Format | Info
--|-|-|-
-[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary)
-[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
-[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
-[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
-[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
-[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
-[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
-[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
-[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
-[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
-
-Note: you can replace any of these files with a directory by the same name (minus the suffix)
-and then include multiple files inside that directory (with that suffix) to merge multiple files together.
diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md
deleted file mode 100644
index 1004eea..0000000
--- a/.github/actions/spelling/advice.md
+++ /dev/null
@@ -1,25 +0,0 @@
-
-If the flagged items are :exploding_head: false positives
-
-If items relate to a ...
-* binary file (or some other file you wouldn't want to check at all).
-
- Please add a file path to the `excludes.txt` file matching the containing file.
-
- File paths are Perl 5 Regular Expressions - you can [test](
-https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
-
- `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
-../tree/HEAD/README.md) (on whichever branch you're using).
-
-* well-formed pattern.
-
- If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
- try adding it to the `patterns.txt` file.
-
- Patterns are Perl 5 Regular Expressions - you can [test](
-https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
-
- Note that patterns can't match multiline strings.
-
-
diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt
deleted file mode 100644
index 35f1a6e..0000000
--- a/.github/actions/spelling/allow.txt
+++ /dev/null
@@ -1,2194 +0,0 @@
-ACCB
-ACOPP
-ACOPR
-ACTRED
-ADELT
-ADW
-AFDIR
-AFORT
-AKIVA
-ALPBD
-AMAD
-AMAX
-ANGBD
-ANGT
-ANGTEST
-ARGLALE
-ARGLBLE
-ARGLCLE
-ARGLINA
-ARGLINB
-ARGLINC
-ARGTRIGLS
-ARMDIR
-ARMLD
-ATMAT
-AVGASA
-AVGASB
-AVX
-Aineq
-Aub
-BDTEST
-BDTOL
-BENNETT
-BFDIR
-BIGLSQ
-BIGV
-BLEN
-BLOCKNAME
-BLOWEYA
-BLOWEYB
-BNE
-BOBTR
-BQP
-BQPGASIM
-BROWNAL
-Bindel
-Broyden
-CGRAD
-CHANDHEQ
-CHCKTST
-CHEBYQAD
-CHEBYQADNE
-CHNROSNB
-CHNRSBNE
-CHNRSNBM
-CHNRSNBMNE
-CLIST
-CODEOWNERS
-COMPILERCURRENT
-COMPILERYEAR
-CONSTSF
-COSV
-CRV
-CSAVE
-CURDIR
-CVMAXM
-CVSABA
-CVXQP
-Cholesky
-Comput
-Conx
-DAGGRESSIVE
-DALLASM
-DALLASS
-DAMTP
-DANWOODLS
-DDEBUGGING
-DDKNEW
-DEBUGF
-DECACT
-DECONVB
-DECONVBNE
-DECONVC
-DECONVNE
-DECONVU
-DEGENLPB
-DEGENQPC
-DETRAT
-DFF
-DFFALT
-DFLOAT
-DFORT
-DGD
-DIAMON
-DIFFA
-DIFFB
-DIFFC
-DINTEGER
-DISTEST
-DISTQ
-DMN
-DMOVE
-DNORMSAVE
-DQP
-DREAL
-DSQMIN
-DSTEP
-DTOC
-DUALC
-DXNEW
-DXSIGN
-Dble
-Demmel
-EDGMAX
-ELTA
-ERRBIG
-ERRINBAR
-ERRINROS
-ERRINRSM
-ERRINRSMNE
-ERRTOL
-ESTIM
-EXTRASIM
-Evals
-FBRAIN
-FCF
-FDEBUGFLAGS
-FEAS
-FEEDLOC
-FFF
-FFLAGSG
-FFLAGSO
-FFORT
-FINDLOC
-FINTRFH
-FMXAPIF
-FNAMELEN
-FNEW
-FOPTIMFLAGS
-FPEs
-FPTR
-FRACSQ
-FRESERVE
-FRHOSQ
-FSAVE
-FSTD
-Frobenius
-Funval
-GBEG
-GETACTF
-GFF
-GFORT
-GFVER
-GGBEG
-GISQ
-GNUC
-GOFFIN
-GQSQ
-Galann
-HAIFAM
-HALFRT
-HATFLDFL
-HATFLDG
-HDF
-HHMM
-HIELOW
-HIMMELBI
-HIMMELBJ
-HISTORYF
-HKT
-HLAG
-HMAX
-HOMEPATH
-HRED
-HUESTIS
-HYDC
-HYDCAR
-HYPOT
-Hennart
-Himmelblau
-IABS
-IBDSAV
-IBRNCH
-ICONT
-ICOUNT
-IDIAG
-IDXNEW
-IFEAS
-IFLAG
-IFULL
-IMPROVEX
-INTREAL
-IPTEM
-IPTEMP
-ISAVE
-ISDIRN
-ITCSAV
-ITERSW
-IVMC
-IVMD
-IZDOTA
-Idnani
-JCP
-JDIAG
-JDRO
-JPN
-JPT
-JSWITCH
-JVM
-KKT
-KOEBHELB
-KOLD
-KPP
-KSAVE
-KTEMP
-Kahan
-Kieee
-Ktrap
-LAGINT
-LAGMAX
-LANCZOS
-LCPP
-LCTRS
-LDDEBUGFLAGS
-LDOPTIMFLAGS
-LEVYMONE
-LFORT
-LFUNC
-LGPL
-LGPLv
-LHAIFAM
-LINALGF
-LINCONT
-LINGEO
-LINSPANH
-LINTR
-LINUPD
-LLVM
-LOADBAL
-LRA
-LRCOVTYPE
-LSNNODOC
-LSQFIT
-LUKSAN
-MAKELA
-MANCINO
-MANCINONE
-MAXCV
-MAXE
-MAXHISTMEM
-MAXLIKA
-MAXNHIST
-MAXRED
-MEMORYF
-MEXF
-MEXGATE
-MHM
-MIFFLIN
-MINMAXRB
-MINSURF
-MJDP
-MMA
-MODERRSAVE
-MPI
-MPtr
-MSGLEN
-MTEST
-Mbounds
-Mchkptr
-Mchkstk
-Minform
-Mnostack
-Mstack
-Mstandard
-NACTP
-NACTX
-NBEST
-NCALL
-NEAUOA
-NEWSTR
-NEWUOAM
-NEquality
-NFF
-NFM
-NFMM
-NFORT
-NFSAV
-NFTEST
-NFX
-NInbineq
-NOISEF
-NOPAUSE
-NPROCS
-NPTM
-NPTx
-NREM
-NRESC
-NSAV
-NTRITS
-NVALA
-NVALB
-NVCOMPILER
-OBJCON
-OET
-OLDSTR
-ONEMIN
-ONESHELL
-OSBORNEB
-OSTYPE
-OUTPUTF
-OUTUNIT
-Ofast
-Omojokun
-PARETA
-PARMU
-PARSIG
-PGI
-PGIC
-PIVKSAV
-PNLEN
-POLAK
-PQOLD
-PREPROCF
-PRESAV
-PRODPL
-PSB
-Pennec
-Pillo
-Postconditions
-Powellful
-QING
-QINGNE
-QMSTEP
-QOPTSQ
-QPAVLB
-QPCBLEND
-QPCBOEI
-QPNBLEND
-QPNBOEI
-Qsave
-RANDNUM
-RCV
-RDNEXT
-RDPREV
-READONLY
-REDMAX
-REDNEW
-REDSAV
-RESMAX
-RFF
-RFORT
-ROWCOL
-Raphson
-Rdsave
-Rsave
-SBDI
-SCADEN
-SDK
-SEDI
-SEGFAULTs
-SFF
-SFORT
-SHFMAX
-SHFMIN
-SHORTD
-SIGABRT
-SIGI
-SIGSEG
-SINV
-SIPOW
-SIXTHM
-SNORM
-SNSQ
-SPABS
-SPANHYD
-SPLS
-SQSTP
-STDERR
-STDIN
-STDOUT
-STEPA
-STEPB
-STPFUL
-STPSAV
-STRINGF
-SUFFIXG
-SUFFIXO
-SUMA
-SUMABS
-SUMB
-SUMG
-SUMH
-SUMOLD
-SUMPQ
-SUMV
-SUMW
-SVAL
-SWOPF
-SYMTOL
-Scheinberg
-Szego
-TARGUS
-TAXR
-TDIAD
-TDMIN
-TEMPQ
-TENBARS
-TENV
-TFI
-TINYCV
-TINYNUM
-TMPF
-TODO
-TOINTGOR
-TOINTPSP
-TRESTING
-TRO
-TRURED
-TWOPI
-TWORSQ
-Terpolation
-Tmin
-Toint
-Tpng
-Trefethen
-Uninstalling
-VANDANIUMS
-VANDERM
-VBIG
-VESUVIO
-VESUVIOU
-VFF
-VFORT
-VGRAD
-VHW
-VLMXSQ
-VMAX
-VMNEW
-VMOLD
-VNEW
-VQALT
-VSAVE
-VSQ
-Vardi
-WFIXSQ
-WGD
-WHW
-WINC
-WMULT
-WMX
-WORKDIR
-WSIG
-WSQSAV
-WVEC
-Waliasing
-Wampersand
-Wcompare
-Wconversion
-Wdo
-Werror
-Weverything
-Wextra
-Wimplicit
-Wintrinsics
-Wline
-Wmaybe
-Wno
-Wpedantic
-Wprecision
-Wrealloc
-Wreturn
-Wsurprising
-Wunderflow
-Wuninitialized
-Wunset
-Wunused
-Wuse
-XAV
-XFF
-XFORT
-XIPT
-XJPT
-XOPTD
-XOPTS
-XPR
-XRESERVE
-XSUM
-Xcode
-Xiaojun
-YFITU
-YYY
-YYYY
-Yurakucho
-ZDOTV
-ZDOTW
-ZDVABS
-ZDWABS
-Zongaro
-aarch
-abig
-absoft
-absvars
-acos
-actrem
-addact
-addpath
-adec
-adjustl
-aflang
-afun
-agrid
-ainc
-alloc
-allprec
-allvar
-alphm
-alpht
-altmov
-amat
-amed
-anl
-anorm
-aocc
-apiref
-apsd
-args
-argwhere
-armflang
-armv
-arrayfun
-arxiv
-asin
-asml
-astamm
-asubd
-atan
-atest
-awvwgk
-backend
-backtr
-bak
-bakf
-ballcon
-barmu
-bashrc
-bcon
-befin
-beq
-berr
-betabd
-bfirst
-bifin
-bigden
-biglag
-bign
-bigprob
-bigstp
-bineq
-bisheng
-bln
-bmat
-bmatk
-bmatknew
-bobyqa
-bobyqb
-boundmax
-bsecond
-bstep
-bsum
-bvec
-bwvd
-bymat
-byterecl
-calbeta
-calcfc
-calfun
-callstack
-calquad
-calvlag
-cauchy
-cbfun
-cbig
-cdec
-cdecs
-cellfun
-ceq
-cerg
-cfile
-cfilt
-chckfunval
-chebquad
-chebyquad
-checkcode
-checkexit
-checktest
-chist
-chistx
-chk
-chkfunval
-chkglobal
-chmod
-chrosen
-chstr
-cineq
-classname
-cleanall
-cleanbin
-cleanmisc
-cleansrc
-clf
-clflag
-cmax
-cmdx
-cmin
-cmod
-cmpaths
-cmtools
-cobyla
-cobylal
-cobylan
-cobylb
-coindexing
-colsq
-compdf
-completenames
-config
-confilt
-conhist
-conmat
-consav
-constrmax
-constrv
-constrviolation
-constrviolations
-consts
-copyfile
-copyfiles
-cpen
-cpenalty
-cpenmsg
-cpp
-cpuinfo
-cpwd
-cqa
-crec
-cref
-cron
-crvmin
-cshift
-csnumerics
-cstr
-cstrv
-cstyle
-ctest
-cth
-ctol
-cureos
-curv
-cval
-cviol
-cvmaxn
-cvmaxp
-cvold
-cvsabs
-cvshift
-cvsn
-cvtol
-cweight
-dataprof
-datenum
-datestr
-datetime
-datmat
-dbg
-dbgstr
-dbstack
-dcauchy
-dden
-dderiv
-ddmove
-ddsav
-debian
-deblank
-debugflag
-decup
-delact
-delbar
-delsame
-delsav
-delsq
-dena
-denabs
-denb
-denex
-denmax
-denold
-denomc
-denomg
-denomold
-denorm
-denormal
-denrat
-densav
-dependabot
-devblogs
-dfo
-dftpath
-dgm
-dhd
-dhs
-dimrange
-dimstride
-dirname
-dirs
-discmn
-distsq
-divz
-divzero
-dlen
-dlin
-dmask
-dnew
-dnewton
-dnoise
-dnorm
-dnormsav
-dnrm
-dold
-dproj
-dred
-dredg
-dredsq
-dsq
-dstemp
-dtest
-dtg
-dth
-dtz
-dumpversion
-dvlag
-dxn
-dxpt
-dxref
-eastoutside
-ebound
-edu
-eference
-eid
-eig
-eigen
-eigmin
-eigs
-elif
-elseif
-eminlb
-eminub
-emsg
-enddo
-endif
-entrywise
-envvar
-envvars
-eps
-epsc
-epsfiles
-epsname
-epstopdf
-equipez
-eqv
-errbd
-erres
-errh
-erri
-errmsg
-errorid
-errormsg
-errquad
-errstop
-esac
-etamax
-evalc
-evalcb
-evalcon
-evalf
-evalfun
-evalobj
-evaluatef
-evaluatefc
-exe
-exitflag
-exitflags
-exmp
-expr
-falseloc
-fautomatic
-fbacktrace
-fbase
-fbeg
-fbounds
-fcheck
-fclose
-fcratio
-fdefault
-feval
-fexist
-ffast
-ffiles
-ffilt
-fflags
-ffmt
-ffp
-ffpe
-fhist
-fhistf
-fhistx
-fieldnames
-figname
-fileattrib
-filelist
-fileparts
-fileread
-filesep
-fimplicit
-findall
-findpole
-findstring
-finfo
-finit
-fintrf
-firstorderopt
-fixedx
-fixl
-fixu
-fletcheq
-flist
-flsrc
-fmax
-fmexapi
-fmin
-fmincon
-fminp
-fminsearch
-fminunc
-fmodule
-fmq
-fmsg
-fmx
-fmxapi
-fmxcl
-fnext
-fno
-fnonstd
-fontsize
-fopen
-fopt
-foreach
-forrtl
-fortd
-fortls
-fortranwiki
-fout
-fpe
-fpp
-fprev
-fprintf
-fprob
-fpscomp
-fqdiff
-fqdz
-frac
-fracmult
-freal
-frec
-freex
-freexhist
-fref
-fsolver
-fsource
-fsrc
-fstack
-fstat
-fstr
-ftarget
-ftest
-fthreshold
-ftrace
-ftrap
-ftrapuv
-ftrapv
-ftz
-fullfile
-fullpath
-fullx
-func
-funcmax
-funcon
-funname
-funx
-fval
-fwrite
-fvdsrc
-frdsrc
-gaussian
-gca
-gcc
-gcf
-gcrt
-gdb
-genmod
-geostep
-getact
-getenv
-getfintrf
-gethuge
-getmax
-getmodel
-getseed
-gfortran
-ggfree
-ggsav
-ghg
-ghostscript
-ghv
-github
-githuge
-gitmodules
-gitpersonal
-gitsubmodule
-gittest
-glag
-gline
-glnxa
-gmon
-gnew
-gnorm
-goldp
-google
-gopt
-gotcha
-gotchas
-gprof
-grdstp
-gredsq
-grep
-gsq
-gstp
-gtest
-gub
-hangt
-hcol
-hdiag
-hdir
-hdred
-hess
-hessenberg
-hessmul
-hfig
-hfiles
-hkpfs
-hmlb
-hmul
-hnorm
-homedir
-htm
-html
-htol
-http
-https
-huawei
-hugecon
-hugefun
-hugenum
-iac
-iact
-iamat
-ibd
-ibmat
-ibmxl
-icf
-ichar
-iclflag
-idbg
-idim
-idmatrix
-idz
-ieeeinf
-ieeenan
-ienvvar
-ifcore
-ifeq
-iff
-ifile
-ifmt
-ifneq
-ifort
-ifun
-ifv
-ifx
-ignoredir
-ignorefiles
-igo
-ihq
-iid
-iin
-ikind
-ilbd
-ilm
-imag
-imask
-imatrix
-imf
-img
-incb
-includenan
-incx
-ineq
-infnan
-initfilt
-inith
-initl
-initq
-initxf
-initxfc
-inout
-inprod
-inputdir
-inputfiles
-interform
-interpolants
-intmax
-intnum
-intovf
-intp
-intrinsics
-iostat
-iout
-ipo
-ipq
-ipqw
-iprc
-iprec
-iprint
-iprob
-ipt
-iqf
-irand
-irc
-irf
-irun
-isa
-isav
-isavailable
-isbanded
-isbd
-isbetter
-iscalar
-ischarstr
-ischstr
-iscs
-isd
-isdigit
-isdir
-isempty
-isenv
-isenvs
-iseq
-isequiv
-isf
-isfield
-isinf
-isintegerscalar
-isintnum
-isinv
-isleap
-islogical
-islogicalscalar
-ismac
-ismatrix
-ismember
-isminor
-isnan
-isnumeric
-isnumvec
-isol
-isolver
-isorth
-isp
-ispc
-isprofile
-isq
-isqs
-isrc
-isreal
-isrealcolumn
-isrealmatrix
-isrealrow
-isrealscalar
-isrealvector
-isrm
-isrr
-isrs
-isrv
-isrvlb
-isrvub
-isscalar
-isspace
-isstruct
-issuccess
-issymmetric
-istp
-istr
-istril
-istriu
-isu
-isub
-isubsub
-isunix
-isvector
-isverify
-itemp
-iterc
-itercg
-itermax
-itest
-itol
-itpset
-itype
-iubd
-ivar
-ivector
-ivl
-ixa
-ixb
-ixn
-ixo
-ixp
-ixs
-izmat
-izmiran
-jan
-jblevins
-jcobyla
-jdrop
-jopt
-jorge
-jrfonseca
-jsav
-jsl
-jsu
-jwd
-kbase
-khist
-kopt
-korig
-kprov
-kpt
-kref
-ksav
-ksq
-ksqs
-kunpeng
-kworst
-lagmax
-lapack
-lbfin
-lbx
-lcon
-ldout
-len
-lenb
-lenlb
-lenub
-lenx
-leq
-lfqint
-lfrac
-lfsrc
-lhs
-libflang
-libpgmath
-libprima
-libsprima
-libthread
-linalg
-lincoa
-lincob
-lineq
-linewidth
-linspace
-lintering
-linting
-linux
-logfile
-logfiles
-logicals
-loor
-lscalar
-lscpu
-lsec
-lsqminnorm
-lsqr
-ltest
-lvector
-lwidth
-macos
-macup
-makefiles
-matcutest
-matd
-matfile
-mathrm
-mathworks
-matlab
-matlabcentral
-matlabroot
-matlabs
-matmul
-matprod
-matv
-maxabs
-maxarg
-maxchist
-maxcon
-maxconhist
-maxdepth
-maxdi
-maxdim
-maxeval
-maxexponent
-maxfhist
-maxfilt
-maxfloat
-maxfun
-maxhist
-maxint
-maxip
-maxir
-maxit
-maxiter
-maxloc
-maxmemory
-maxminloc
-maxn
-maxnum
-maxsigma
-maxtime
-maxtr
-maxval
-maxxhist
-mcc
-mcon
-mcs
-mex
-mexcallmatlab
-mexdir
-mexename
-mexext
-mexfunction
-mexification
-mexified
-mexifies
-mexify
-mexifying
-mexname
-mexopt
-mexopts
-mfiledir
-mfilename
-mfilepath
-microsoft
-minalpha
-minchist
-mincon
-mincv
-mindim
-minexponent
-minf
-minfhist
-minip
-minir
-minloc
-minval
-mkdir
-mkfiles
-mlint
-mlist
-mlog
-mmin
-moderatec
-moderatef
-moderatex
-moderr
-moderrsav
-modscal
-monlens
-movefile
-mplementation
-mpp
-mrec
-mref
-mtools
-mtrace
-mul
-mulvdi
-mulvsi
-mxn
-mytype
-nact
-nactold
-nactsav
-nagfor
-nagsrc
-nargin
-nargout
-ncopies
-ncp
-ncpu
-ndftpath
-ndiag
-ndim
-negcrv
-neginf
-negvdi
-negvsi
-netlib
-newact
-newfile
-newn
-newuoa
-newuob
-nfail
-nfc
-nfilt
-nfvals
-ngetact
-nhist
-nimg
-nin
-nint
-nlc
-nlcehist
-nlcehistx
-nlceq
-nlceqx
-nlchist
-nlcihist
-nlcihistx
-nlcineq
-nlcineqx
-nlhs
-nlinceq
-nlopt
-nloptr
-nname
-nnpt
-nocompile
-nofreex
-noisimul
-noisyceval
-noisyfeval
-noisyfun
-nonlcon
-nonstd
-nonzeros
-noold
-nopass
-norecursion
-normd
-normg
-normx
-northoutside
-notbig
-nout
-nprec
-nprobs
-nprov
-npt
-nrand
-nrhs
-nrun
-nsave
-nswm
-ntest
-numel
-numericalalgorithmsgroup
-numpy
-numvec
-nvararg
-nvfortran
-nvidia
-nyear
-odernization
-olddir
-oldnewthing
-oldpath
-omask
-omitnan
-oneapi
-oop
-openturns
-optim
-optimoptions
-optimset
-optnew
-optold
-optool
-origdir
-outdir
-outprod
-outptuts
-outputdir
-outputfile
-outputfiles
-ovf
-owell
-parallelizable
-parfor
-parlest
-partmp
-paru
-paruest
-pathdef
-pathsep
-pbaspect
-pdf
-pdfname
-pdfo
-pdfwrite
-pdim
-pdstr
-pdv
-perfdata
-perfprof
-permprob
-pfmt
-pgalt
-pgfortran
-pglag
-pgopt
-pgstp
-phimax
-phimin
-phiu
-pinput
-pintrf
-pipefail
-piv
-pivksv
-pivnew
-planerot
-plhs
-plist
-plnew
-pname
-png
-poisedness
-polyu
-posdef
-posinf
-postprima
-postprocesses
-poutput
-powalg
-powell
-powidf
-powisf
-ppf
-pqalt
-pqinc
-pqlag
-pqw
-preconnected
-predsq
-prefdir
-prehist
-preprima
-preproc
-prerec
-preref
-prerem
-prhs
-primalib
-primapack
-printf
-probinfo
-probname
-probs
-probtype
-psd
-psdsav
-ptinsq
-ptr
-ptsaux
-ptsid
-ptype
-pwd
-pybobyqa
-qadd
-qalt
-qbeg
-qdiff
-qdz
-qfac
-qinc
-qint
-qlist
-qmin
-qmstep
-qnew
-qradd
-qred
-qrexc
-qsav
-quada
-quadb
-quadinc
-quadprog
-qval
-qxoptq
-ragonneau
-ralna
-randomizex
-randperm
-randseed
-rangehist
-rayleighq
-rdiag
-readme
-realloc
-realmax
-realmin
-realpath
-reciq
-recl
-redrat
-redrho
-reduc
-refa
-refactor
-refactored
-refactoring
-refactors
-refb
-refbook
-regexp
-regexprep
-repmat
-resact
-rescon
-resis
-resnew
-restmp
-restoredefaultpath
-retmsg
-retnf
-rfac
-rfmt
-rfull
-rgc
-rhobeg
-rhoend
-rhomsg
-rhosq
-rineq
-rlb
-rlbp
-rmatrix
-rmdir
-rmempty
-rmfield
-rmpath
-rnf
-rng
-rnumq
-rosenbrock
-rownorm
-rpi
-rpnf
-rsc
-rscalar
-rseed
-rshrink
-rsnszk
-rstat
-rtest
-rubp
-rvector
-safealloc
-saveas
-savefilt
-savehist
-savepath
-sbig
-sbound
-scalb
-scipy
-scl
-scoreinc
-sdec
-sdiff
-sdirn
-secup
-seedf
-seedsav
-seedx
-segfault
-selectx
-semilogx
-semismooth
-setdiff
-setdrop
-setenv
-setij
-setopt
-setpath
-setseed
-setsolvopt
-setvars
-severes
-sfixsq
-sfrac
-sgk
-shiftbase
-shortd
-showpath
-shs
-sigbar
-signif
-simd
-simi
-simid
-sinc
-sizeof
-slbd
-smallestreal
-smallx
-smat
-smatv
-snan
-soldir
-solname
-solvera
-solvern
-spaths
-spdiags
-speye
-sprintf
-sqdscr
-sqp
-sqrtd
-sqrtdn
-srand
-src
-sredg
-srname
-ssden
-ssh
-ssml
-ssq
-ssqsav
-sstemp
-stackexchange
-stackoverflow
-stackvar
-stb
-stdlib
-stefan
-steplength
-stepsq
-stest
-stevengj
-sth
-stplen
-stpm
-stpsiz
-strcat
-strcmp
-strcmpi
-strjoin
-strlen
-strlength
-strnew
-strrep
-strs
-strt
-strtmp
-strtrim
-sturlamolden
-subd
-subdiagonal
-subdir
-subi
-subinfo
-subsubdir
-subsubdirectories
-subsubsubdirectories
-subvdi
-subvsi
-succ
-sumin
-sumsq
-sumz
-sunf
-sunsrc
-superdiagonal
-svg
-sxpt
-symlink
-symmat
-symmetrizes
-sys
-sysctl
-szymansk
-tanbd
-taua
-taub
-taubeg
-taumax
-tauold
-tausq
-tbig
-tdel
-tdiag
-techdoc
-tempa
-tempb
-tempc
-tempd
-tempdir
-tempv
-testcu
-testdata
-testdim
-testfeature
-testperm
-testprima
-testsolv
-testsuite
-textread
-textscan
-thegeekstuff
-threadsafe
-timestwo
-timezone
-tlist
-tmp
-tnz
-toc
-todo
-tomragonneau
-tracebackqq
-trapuv
-trapv
-tridh
-tridiagonalized
-tridiagonalizes
-tridiagonalizing
-trigsabs
-trigssqs
-tril
-trimstr
-triu
-trrad
-trsapp
-trsbox
-trstep
-trstlp
-trsubp
-trtol
-trueloc
-trustregion
-tryqalt
-tsml
-tsource
-tsubdiag
-tuxfamily
-twod
-ubfin
-ubl
-ubln
-ubuntu
-ubx
-ufrac
-ugc
-umask
-uname
-uncmax
-undef
-unf
-uniformoutput
-uninitialised
-uninstall
-uninstalls
-unitang
-univar
-unsetenv
-uobyqa
-uobyqb
-updateh
-updatepole
-updateq
-updateres
-updatexf
-updatexfc
-url
-userdata
-userpath
-usr
-uwidth
-varargin
-varargout
-vardim
-vec
-vectorized
-verisize
-verisym
-vhd
-vhg
-vhv
-vimdiff
-violmx
-vlag
-vlagabs
-vlagbeta
-vlagsq
-vlam
-vlin
-vmu
-vmult
-vmultc
-vmultd
-vnorm
-vquad
-vsig
-vsigj
-vtest
-vxopt
-warnerror
-warningid
-warningmsg
-warnoff
-wassert
-wcheck
-wcos
-website
-weeknum
-whatday
-wholename
-wiki
-wikipedia
-wmsg
-wmv
-workflow
-workflows
-wsin
-wsq
-wunit
-wvlag
-wwsq
-www
-wzsav
-xalt
-xargs
-xbase
-xbdi
-xcache
-xcauchy
-xcheck
-xdiff
-xdist
-xdrop
-xdsq
-xfilt
-xfmt
-xfree
-xgrid
-xhist
-xiang
-ximproved
-xinbd
-xind
-xjchen
-xlabel
-xlabh
-xline
-xmax
-xmin
-xminloc
-xml
-xnew
-xnsq
-xopt
-xoptsq
-xor
-xosav
-xpq
-xpt
-xptemp
-xptknew
-xptxav
-xrefsq
-xsav
-xsize
-xsq
-xstar
-xstart
-xstop
-xstr
-xtemp
-xtest
-xunit
-xxpt
-xxxx
-xypron
-ylabel
-ymat
-ymax
-ymd
-ymin
-yml
-yqa
-ysq
-ystar
-yticklabels
-yticks
-yymmdd
-yyx
-yzmat
-zaikun
-zaikunzhang
-zdasav
-zdota
-zequipe
-zhang
-zhangzk
-zknew
-zmask
-zmat
-zsq
-ztemp
-ztest
-strsplit
-filemode
-gitee
-logallrefupdates
-mygit
-pushurl
-repositoryformatversion
-pushurls
-Aex
-constrvmax
-fixedxl
-fixedxu
-rbounds
-NInequality
-gitlab
-href
-DEGENLPA
-dev
-archiva
-norma
-fdlist
-idir
-worktree
-funit
-ndgt
-nexp
-sformat
-drawnow
-SMBANK
-FSAN
-MESSAGEF
-NVDIR
-NVBIN
-ghist
-jachist
-radhist
-rathist
-statehist
-Hanzomon
-Dantzig
-newunit
-SSEBLIN
-GFSTD
-Mrecursive
-frecursive
-bibtex
-howpublished
-REREF
-getcpen
-cpenmin
-postconditions
-trfail
-ceval
-CMN
-fprint
-mdash
-segfaults
-slen
-ehdr
-METHANL
-updatedb
-mlocate
-TOINTQOR
-doi
-zenodo
-hilb
-maxub
-minlb
-sprimalib
-COMPFLAGS
-daynum
-dfrv
-mineq
-BQPGABIM
-idmat
-ixl
-ixu
-mxl
-mxu
-lincon
-Aeqx
-Aineqx
-ieq
-iineq
-AINEQ
-cbnd
-lceq
-lcineq
-lconstr
-nlconstr
-dotnet
-jlumbroso
-NONLCON
-nonlcon
-sqr
-cvnd
-cvpd
-nlcon
-charityware
-AFINC
-AFLIB
-cmake
-endmacro
-evals
-primac
-primaf
-cintrf
-COBJ
-COBJCON
-cobjfun
-cobjfuncon
-constrc
-evalcobj
-evalcobjcon
-execstack
-FUNPTR
-PROCPOINTER
-cfun
-cobj
-NVHPC
-objcon
-cobjcon
-FEVL
-Qdiag
-phimeca
-schueller
-julia
-libclang
-dumpbin
-objdump
-rfun
-cfiles
-ifiles
-parcluster
-ERRINROSNE
-FLG
-gsrc
-ifd
-INCLUDEDIR
-nbut
-ncharacter
-nchist
-nconstrviolation
-nds
-nexitflag
-nfhist
-nfintrf
-nfrac
-ngredsq
-nif
-ninteger
-nmex
-nnf
-nrestmp
-nreturn
-nshs
-nsolver
-nwhich
-Olimit
-tfopt
-tfun
-tfx
-vlagc
-gcp
-whos
-fortlab
-LEVYMONT
-BEALE
-BOXBODLS
-GMNCASE
-ZECEVIC
-BROWNBS
-HALDMADS
-CANTILVR
-WATSONNE
-GBRAIN
-GOULDQP
-MEYER
-NYSTROM
-TRUSPYR
-WACHBIEG
-WAYSEA
-ZANGWIL
-CHWIRUT
-LOTSCHD
-HYDROELS
-JENSMP
-KSIP
-MARATOS
-MEXHAT
-OPTCNTRL
-OPTPRLOC
-OSCIPANE
-TWOBARS
-lang
-appveyor
-baut
-bprima
-buildpkg
-ccall
-Cdouble
-CEnum
-cfunction
-Cint
-cirrusjl
-cirruslabs
-codecov
-COMPATHELPER
-copyto
-Cvoid
-dfed
-eachindex
-eead
-eltype
-firstindex
-freebsd
-iex
-isdefined
-iseven
-jll
-lastindex
-lcov
-libprimac
-lookback
-Nonconvex
-ntuple
-objfun
-objfuncon
-println
-processcoverage
-ric
-rtol
-runtest
-runtests
-stask
-stp
-testset
-Thi
-thiebaut
-threadid
-typemax
-typemin
-typeof
-uplo
-webclient
-nlin
-nlp
-nnln
-nvar
-PRIMACUT
-PRIMANLP
-uvar
-weakdeps
diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns
deleted file mode 100644
index 8023bbb..0000000
--- a/.github/actions/spelling/candidate.patterns
+++ /dev/null
@@ -1,527 +0,0 @@
-# marker to ignore all code on line
-^.*/\* #no-spell-check-line \*/.*$
-# marker to ignore all code on line
-^.*\bno-spell-check(?:-line|)(?:\s.*|)$
-
-# https://cspell.org/configuration/document-settings/
-# cspell inline
-^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b
-
-# patch hunk comments
-^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
-# git index header
-index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
-
-# cid urls
-(['"])cid:.*?\g{-1}
-
-# data url in parens
-\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
-# data url in quotes
-([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
-# data url
-data:[-a-zA-Z=;:/0-9+]*,\S*
-
-# https/http/file urls
-(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
-
-# mailto urls
-mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
-
-# magnet urls
-magnet:[?=:\w]+
-
-# magnet urls
-"magnet:[^"]+"
-
-# obs:
-"obs:[^"]*"
-
-# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
-# In this examples content, I'm using a number of different ways to match things to show various approaches
-# asciinema
-\basciinema\.org/a/[0-9a-zA-Z]+
-
-# apple
-\bdeveloper\.apple\.com/[-\w?=/]+
-# Apple music
-\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
-
-# appveyor api
-\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
-# appveyor project
-\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
-
-# Amazon
-
-# Amazon
-\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
-# AWS S3
-\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/%_?:=]*
-# AWS execute-api
-\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
-# AWS ELB
-\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
-# AWS SNS
-\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/%_?:=]*
-# AWS VPC
-vpc-\w+
-
-# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
-# YouTube url
-\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
-# YouTube music
-\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
-# YouTube tag
-<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
-# YouTube image
-\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
-# Google Accounts
-\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
-# Google Analytics
-\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
-# Google APIs
-\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
-# Google Storage
-\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
-# Google Calendar
-\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
-\w+\@group\.calendar\.google\.com\b
-# Google DataStudio
-\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
-# The leading `/` here is as opposed to the `\b` above
-# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
-# Google Docs
-/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
-# Google Drive
-\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
-# Google Groups
-\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
-# Google Maps
-\bmaps\.google\.com/maps\?[\w&;=]*
-# Google themes
-themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
-# Google CDN
-\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
-# Goo.gl
-/goo\.gl/[a-zA-Z0-9]+
-# Google Chrome Store
-\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
-# Google Books
-\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=.]*
-# Google Fonts
-\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
-# Google Forms
-\bforms\.gle/\w+
-# Google Scholar
-\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
-# Google Colab Research Drive
-\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
-
-# GitHub SHAs (api)
-\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
-# GitHub SHAs (markdown)
-(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
-# GitHub SHAs
-\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
-# GitHub wiki
-\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
-# githubusercontent
-/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
-# githubassets
-\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
-# gist github
-\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
-# git.io
-\bgit\.io/[0-9a-zA-Z]+
-# GitHub JSON
-"node_id": "[-a-zA-Z=;:/0-9+]*"
-# Contributor
-\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
-# GHSA
-GHSA(?:-[0-9a-z]{4}){3}
-
-# GitLab commit
-\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
-# GitLab merge requests
-\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
-# GitLab uploads
-\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
-# GitLab commits
-\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
-
-# binanace
-accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
-
-# bitbucket diff
-\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
-# bitbucket repositories commits
-\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
-# bitbucket commits
-\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
-
-# bit.ly
-\bbit\.ly/\w+
-
-# bitrise
-\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
-
-# bootstrapcdn.com
-\bbootstrapcdn\.com/[-./\w]+
-
-# cdn.cloudflare.com
-\bcdnjs\.cloudflare\.com/[./\w]+
-
-# circleci
-\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
-
-# gitter
-\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
-
-# gravatar
-\bgravatar\.com/avatar/[0-9a-f]+
-
-# ibm
-[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
-
-# imgur
-\bimgur\.com/[^.]+
-
-# Internet Archive
-\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
-
-# discord
-/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
-
-# Disqus
-\bdisqus\.com/[-\w/%.()!?&=_]*
-
-# medium link
-\blink\.medium\.com/[a-zA-Z0-9]+
-# medium
-\bmedium\.com/\@?[^/\s"]+/[-\w]+
-
-# microsoft
-\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
-# powerbi
-\bapp\.powerbi\.com/reportEmbed/[^"' ]*
-# vs devops
-\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
-# microsoft store
-\bmicrosoft\.com/store/apps/\w+
-
-# mvnrepository.com
-\bmvnrepository\.com/[-0-9a-z./]+
-
-# now.sh
-/[0-9a-z-.]+\.now\.sh\b
-
-# oracle
-\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
-
-# chromatic.com
-/\S+.chromatic.com\S*[")]
-
-# codacy
-\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
-
-# compai
-\bcompai\.pub/v1/png/[0-9a-f]+
-
-# mailgun api
-\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
-# mailgun
-\b[0-9a-z]+.mailgun.org
-
-# /message-id/
-/message-id/[-\w@./%]+
-
-# Reddit
-\breddit\.com/r/[/\w_]*
-
-# requestb.in
-\brequestb\.in/[0-9a-z]+
-
-# sched
-\b[a-z0-9]+\.sched\.com\b
-
-# Slack url
-slack://[a-zA-Z0-9?&=]+
-# Slack
-\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
-# Slack edge
-\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
-# Slack images
-\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
-
-# shields.io
-\bshields\.io/[-\w/%?=&.:+;,]*
-
-# stackexchange -- https://stackexchange.com/feeds/sites
-\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
-
-# Sentry
-[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
-
-# Twitter markdown
-\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
-# Twitter hashtag
-\btwitter\.com/hashtag/[\w?_=&]*
-# Twitter status
-\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
-# Twitter profile images
-\btwimg\.com/profile_images/[_\w./]*
-# Twitter media
-\btwimg\.com/media/[-_\w./?=]*
-# Twitter link shortened
-\bt\.co/\w+
-
-# facebook
-\bfburl\.com/[0-9a-z_]+
-# facebook CDN
-\bfbcdn\.net/[\w/.,]*
-# facebook watch
-\bfb\.watch/[0-9A-Za-z]+
-
-# dropbox
-\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
-
-# ipfs protocol
-ipfs://[0-9a-z]*
-# ipfs url
-/ipfs/[0-9a-z]*
-
-# w3
-\bw3\.org/[-0-9a-zA-Z/#.]+
-
-# loom
-\bloom\.com/embed/[0-9a-f]+
-
-# regex101
-\bregex101\.com/r/[^/\s"]+/\d+
-
-# figma
-\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
-
-# freecodecamp.org
-\bfreecodecamp\.org/[-\w/.]+
-
-# image.tmdb.org
-\bimage\.tmdb\.org/[/\w.]+
-
-# mermaid
-\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
-
-# Wikipedia
-\ben\.wikipedia\.org/wiki/[-\w%.#]+
-
-# gitweb
-[^"\s]+/gitweb/\S+;h=[0-9a-f]+
-
-# HyperKitty lists
-/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
-
-# lists
-/thread\.html/[^"\s]+
-
-# list-management
-\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
-
-# kubectl.kubernetes.io/last-applied-configuration
-"kubectl.kubernetes.io/last-applied-configuration": ".*"
-
-# pgp
-\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
-
-# Spotify
-\bopen\.spotify\.com/embed/playlist/\w+
-
-# Mastodon
-\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
-
-# scastie
-\bscastie\.scala-lang\.org/[^/]+/\w+
-
-# images.unsplash.com
-\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
-
-# pastebin
-\bpastebin\.com/[\w/]+
-
-# heroku
-\b\w+\.heroku\.com/source/archive/\w+
-
-# quip
-\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
-
-# badgen.net
-\bbadgen\.net/badge/[^")\]'\s]+
-
-# statuspage.io
-\w+\.statuspage\.io\b
-
-# media.giphy.com
-\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
-
-# tinyurl
-\btinyurl\.com/\w+
-
-# getopts
-\bgetopts\s+(?:"[^"]+"|'[^']+')
-
-# ANSI color codes
-(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
-
-# URL escaped characters
-\%[0-9A-F][A-F]
-# IPv6
-\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
-# c99 hex digits (not the full format, just one I've seen)
-0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
-# Punycode
-\bxn--[-0-9a-z]+
-# sha
-sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
-# sha-... -- uses a fancy capture
-(['"]|")[0-9a-f]{40,}\g{-1}
-# hex runs
-\b[0-9a-fA-F]{16,}\b
-# hex in url queries
-=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
-# ssh
-(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
-
-# PGP
-\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
-# GPG keys
-\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
-# Well known gpg keys
-.well-known/openpgpkey/[\w./]+
-
-# uuid:
-\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
-# hex digits including css/html color classes:
-(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
-# integrity
-integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
-
-# https://www.gnu.org/software/groff/manual/groff.html
-# man troff content
-\\f[BCIPR]
-# '
-\\\(aq
-
-# .desktop mime types
-^MimeTypes?=.*$
-# .desktop localized entries
-^[A-Z][a-z]+\[[a-z]+\]=.*$
-# Localized .desktop content
-Name\[[^\]]+\]=.*
-
-# IServiceProvider
-\bI(?=(?:[A-Z][a-z]{2,})+\b)
-
-# crypt
-"\$2[ayb]\$.{56}"
-
-# scrypt / argon
-\$(?:scrypt|argon\d+[di]*)\$\S+
-
-# Input to GitHub JSON
-content: "[-a-zA-Z=;:/0-9+]*="
-
-# Python stringprefix / binaryprefix
-# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
-(?v#
-(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
-# Compiler flags (Scala)
-(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
-# Compiler flags
-(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
-# Compiler flags (linker)
-,-B
-# curl arguments
-\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
-# set arguments
-\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
-# tar arguments
-\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
-# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
-\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
-# macOS temp folders
-/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt
deleted file mode 100644
index dc74921..0000000
--- a/.github/actions/spelling/excludes.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
-(?:^|/)(?i)COPYRIGHT
-(?:^|/)(?i)LICEN[CS]E
-(?:^|/)3rdparty/
-(?:^|/)go\.sum$
-(?:^|/)package(?:-lock|)\.json$
-(?:^|/)pyproject.toml
-(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$
-(?:^|/)vendor/
-ignore$
-\.a$
-\.ai$
-\.avi$
-\.bmp$
-\.bz2$
-\.class$
-\.coveragerc$
-\.crt$
-\.dll$
-\.docx?$
-\.drawio$
-\.DS_Store$
-\.eot$
-\.exe$
-\.gif$
-\.git-blame-ignore-revs$
-\.gitattributes$
-\.graffle$
-\.gz$
-\.icns$
-\.ico$
-\.jar$
-\.jks$
-\.jpe?g$
-\.key$
-\.lib$
-\.lock$
-\.map$
-\.min\..
-\.mod$
-\.mp[34]$
-\.o$
-\.ocf$
-\.otf$
-\.pdf$
-\.pem$
-\.png$
-\.psd$
-\.pyc$
-\.pylintrc$
-\.s$
-\.svgz?$
-\.tar$
-\.tiff?$
-\.ttf$
-\.wav$
-\.webm$
-\.webp$
-\.woff2?$
-\.xlsx?$
-\.zip$
-^\.github/actions/spelling/
-^\Q.github/workflows/spelling.yml\E$
-
-#######################################
-# Added by Zaikun
-^\.github/CODEOWNERS
-^\.github/dependabot.yml
-\.eps$
-\.pdf$
-^\.development/archiva/
-^\.development/norma/
-rescue_idz/norma/
-fortran/original/
-^\Qbenchmark/rescue_idz/archiva/230305/fortran/.keep\E$
-^\Qbenchmark/rescue_idz/archiva/230305/norma/fortran/.keep\E$
-^\Qbenchmark/rescue_idz/archiva/230305/norma/matlab/.keep\E$
-^\Qbenchmark/rescue_idz/archiva/230305/matlab/.keep\E$
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns
deleted file mode 100644
index e04455e..0000000
--- a/.github/actions/spelling/line_forbidden.patterns
+++ /dev/null
@@ -1,62 +0,0 @@
-# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
-# \bm_data\b
-
-# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
-# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
-# to use this:
-#\bfit\(
-
-# s.b. GitHub
-\bGithub\b
-
-# s.b. GitLab
-\bGitlab\b
-
-# s.b. JavaScript
-\bJavascript\b
-
-# s.b. Microsoft
-\bMicroSoft\b
-
-# s.b. another
-\ban[- ]other\b
-
-# s.b. greater than
-\bgreater then\b
-
-# s.b. into
-\sin to\s
-
-# s.b. opt-in
-\sopt in\s
-
-# s.b. less than
-\bless then\b
-
-# s.b. otherwise
-\bother[- ]wise\b
-
-# s.b. nonexistent
-\bnon existing\b
-\b[Nn]o[nt][- ]existent\b
-
-# s.b. preexisting
-[Pp]re[- ]existing
-
-# s.b. preempt
-[Pp]re[- ]empt\b
-
-# s.b. preemptively
-[Pp]re[- ]emptively
-
-# s.b. reentrancy
-[Rr]e[- ]entrancy
-
-# s.b. reentrant
-[Rr]e[- ]entrant
-
-# s.b. workaround(s)
-\bwork[- ]arounds?\b
-
-# Reject duplicate words
-\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt
deleted file mode 100644
index 95eb9da..0000000
--- a/.github/actions/spelling/patterns.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
-
-# Questionably acceptable forms of `in to`
-# Personally, I prefer `log into`, but people object
-# https://www.tprteaching.com/log-into-log-in-to-login/
-\b[Ll]og in to\b
-
-# acceptable duplicates
-# ls directory listings
-[-bcdlpsw](?:[-r][-w][-Ssx]){3}\s+\d+\s+\S+\s+\S+\s+\d+\s+
-# C types and repeated CSS values
-\s(center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
-# go templates
-\s(\w+)\s+\g{-1}\s+\`(?:graphql|json|yaml):
-# javadoc / .net
-(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
-
-# Commit message -- Signed-off-by and friends
-^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
-
-# Autogenerated revert commit message
-^This reverts commit [0-9a-f]{40}\.$
-
-# ignore long runs of a single character:
-\b([A-Za-z])\g{-1}{3,}\b
-
-
-####################################################################################################
-
-
-# Automatically suggested patterns
-
-# https/http/file urls
-(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
-
-# GitHub SHAs (markdown)
-(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
-
-# stackexchange -- https://stackexchange.com/feeds/sites
-\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
-
-# Compiler flags
-(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
-
-# hex digits including css/html color classes:
-(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
-
-# version suffix v#
-(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
-
-# stackexchange -- https://stackexchange.com/feeds/sites
-\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
-
-# Wikipedia
-\ben\.wikipedia\.org/wiki/[-\w%.#]+
-
-# uuid:
-\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
-
-# hit-count: 2 file-count: 1
-# Non-English
-[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt
deleted file mode 100644
index b5a6d36..0000000
--- a/.github/actions/spelling/reject.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-^attache$
-benefitting
-occurences?
-^dependan.*
-^oer$
-Sorce
-^[Ss]pae.*
-^untill$
-^untilling$
-^wether.*
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 8b55ac6..51d799d 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -19,15 +19,16 @@ jobs:
fail-fast: false
matrix:
version:
- - '1.6'
+ # - '1.6'
- '1'
- 'nightly'
os:
- ubuntu-latest
+ - macos-latest
- windows-latest
arch:
- x64
- - x86
+ # - x86
steps:
- uses: actions/checkout@v3
- uses: julia-actions/setup-julia@v1
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
deleted file mode 100644
index 1c9fceb..0000000
--- a/.github/workflows/spelling.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-name: Check Spelling
-
-# Comment management is handled through a secondary job, for details see:
-# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
-#
-# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
-# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
-# it needs `contents: write` in order to add a comment.
-#
-# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
-# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
-# it needs `pull-requests: write` in order to manipulate those comments.
-
-# Updating pull request branches is managed via comment handling.
-# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
-#
-# These elements work together to make it happen:
-#
-# `on.issue_comment`
-# This event listens to comments by users asking to update the metadata.
-#
-# `jobs.update`
-# This job runs in response to an issue_comment and will push a new commit
-# to update the spelling metadata.
-#
-# `with.experimental_apply_changes_via_bot`
-# Tells the action to support and generate messages that enable it
-# to make a commit to update the spelling metadata.
-#
-# `with.ssh_key`
-# In order to trigger workflows when the commit is made, you can provide a
-# secret (typically, a write-enabled github deploy key).
-#
-# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
-
-on:
- push:
- pull_request:
- # Trigger the workflow manually
- workflow_dispatch:
-
-jobs:
- spelling:
- name: Check Spelling
- permissions:
- contents: read
- pull-requests: read
- actions: read
- security-events: write
- outputs:
- followup: ${{ steps.spelling.outputs.followup }}
- runs-on: ubuntu-latest
- if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
- concurrency:
- group: spelling-${{ github.event.pull_request.number || github.ref }}
- # note: If you use only_check_changed_files, you do not want cancel-in-progress
- cancel-in-progress: true
- steps:
- - name: check-spelling
- id: spelling
- uses: check-spelling/check-spelling@main
- with:
- suppress_push_for_open_pull_request: 1
- checkout: true
- check_file_names: 1
- spell_check_this: check-spelling/spell-check-this@prerelease
- post_comment: 0
- use_magic_file: 1
- experimental_apply_changes_via_bot: 1
- use_sarif: 1
- # Zaikun 20230426: add dictionaries
- extra_dictionary_limit: 20
- extra_dictionaries:
- cspell:bash/src/bash-words.txt
- cspell:python/src/common/extra.txt
- cspell:python/src/python/python-lib.txt
- cspell:python/src/python/python.txt
- cspell:python/src/additional_words.txt
- cspell:software-terms/src/software-terms.txt
- cspell:software-terms/src/software-tools.txt
- cspell:cpp/src/cpp.txt
- cspell:latex/src/latex.txt
- cspell:filetypes/filetypes.txt
- cspell:html/src/html.txt
- cspell:html-symbol-entities/entities.txt
- cspell:css/src/css.txt
-
- comment-push:
- name: Report (Push)
- # If your workflow isn't running on push, you can remove this job
- runs-on: ubuntu-latest
- needs: spelling
- permissions:
- contents: write
- if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
- steps:
- - name: comment
- uses: check-spelling/check-spelling@main
- with:
- checkout: true
- spell_check_this: check-spelling/spell-check-this@prerelease
- task: ${{ needs.spelling.outputs.followup }}
-
- comment-pr:
- name: Report (PR)
- # If you workflow isn't running on pull_request*, you can remove this job
- runs-on: ubuntu-latest
- needs: spelling
- permissions:
- pull-requests: write
- if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
- steps:
- - name: comment
- uses: check-spelling/check-spelling@main
- with:
- checkout: true
- spell_check_this: check-spelling/spell-check-this@prerelease
- task: ${{ needs.spelling.outputs.followup }}
- experimental_apply_changes_via_bot: 1
-
- update:
- name: Update PR
- permissions:
- contents: write
- pull-requests: write
- actions: read
- runs-on: ubuntu-latest
- if: ${{
- github.event_name == 'issue_comment' &&
- github.event.issue.pull_request &&
- contains(github.event.comment.body, '@check-spelling-bot apply')
- }}
- concurrency:
- group: spelling-update-${{ github.event.issue.number }}
- cancel-in-progress: false
- steps:
- - name: apply spelling updates
- uses: check-spelling/check-spelling@main
- with:
- experimental_apply_changes_via_bot: 1
- checkout: true
- ssh_key: "${{ secrets.CHECK_SPELLING }}"
diff --git a/Manifest.toml b/Manifest.toml
new file mode 100644
index 0000000..45eebd8
--- /dev/null
+++ b/Manifest.toml
@@ -0,0 +1,96 @@
+# This file is machine-generated - editing it directly is not advised
+
+julia_version = "1.10.2"
+manifest_format = "2.0"
+project_hash = "953606c6b35d60e283a724a797a2707a6e266039"
+
+[[deps.Artifacts]]
+uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
+
+[[deps.CompilerSupportLibraries_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
+version = "1.1.0+0"
+
+[[deps.Dates]]
+deps = ["Printf"]
+uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
+
+[[deps.JLLWrappers]]
+deps = ["Artifacts", "Preferences"]
+git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca"
+uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
+version = "1.5.0"
+
+[[deps.Libdl]]
+uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
+
+[[deps.LinearAlgebra]]
+deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
+uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
+
+[[deps.OpenBLAS_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
+uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
+version = "0.3.23+4"
+
+[[deps.PRIMA_jll]]
+deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"]
+git-tree-sha1 = "b4263b50aa12adb9ff6954a18e474ae091ba8d37"
+repo-rev = "main"
+repo-url = "https://github.com/amontoison/PRIMA_jll.jl"
+uuid = "eead6e0c-2d5b-5641-a95c-b722de96d551"
+version = "0.8.0+0"
+
+[[deps.Preferences]]
+deps = ["TOML"]
+git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
+uuid = "21216c6a-2e73-6563-6e65-726566657250"
+version = "1.4.3"
+
+[[deps.Printf]]
+deps = ["Unicode"]
+uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
+
+[[deps.Random]]
+deps = ["SHA"]
+uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
+
+[[deps.Requires]]
+deps = ["UUIDs"]
+git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
+uuid = "ae029012-a4dd-5104-9daa-d747884805df"
+version = "1.3.0"
+
+[[deps.SHA]]
+uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
+version = "0.7.0"
+
+[[deps.TOML]]
+deps = ["Dates"]
+uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
+version = "1.0.3"
+
+[[deps.TypeUtils]]
+deps = ["Requires"]
+git-tree-sha1 = "bdd88868eb3fb29aff042a1f50619b5d0b94a5ea"
+uuid = "c3b1956e-8857-4d84-9b79-890df85b1e67"
+version = "0.3.7"
+
+ [deps.TypeUtils.extensions]
+ TypeUtilsTwoDimensionalExt = "TwoDimensional"
+
+ [deps.TypeUtils.weakdeps]
+ TwoDimensional = "1907e7ba-7586-4310-a2ba-dd01462aeb50"
+
+[[deps.UUIDs]]
+deps = ["Random", "SHA"]
+uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
+
+[[deps.Unicode]]
+uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
+
+[[deps.libblastrampoline_jll]]
+deps = ["Artifacts", "Libdl"]
+uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
+version = "5.8.0+1"
diff --git a/Project.toml b/Project.toml
index f083c34..cfb2810 100644
--- a/Project.toml
+++ b/Project.toml
@@ -20,7 +20,7 @@ PRIMANLPModelsExt = "NLPModels"
[compat]
CUTEst = "0.13"
NLPModels = "0.20"
-PRIMA_jll = "0.7.1"
+PRIMA_jll = "0.8.0"
Requires = "1"
TypeUtils = "0.3"
julia = "1.6"
diff --git a/src/wrappers.jl b/src/wrappers.jl
index ae95c06..f888259 100644
--- a/src/wrappers.jl
+++ b/src/wrappers.jl
@@ -1,11 +1,19 @@
-@enum Message::Cint begin
+@enum prima_algorithm_t::Cint begin
+ UOBYQA = 0
+ NEWUOA = 1
+ BOBYQA = 2
+ LINCOA = 3
+ COBYLA = 4
+end
+
+@enum prima_message_t::Cint begin
MSG_NONE = 0
MSG_EXIT = 1
MSG_RHO = 2
MSG_FEVL = 3
end
-@enum Status::Cint begin
+@enum prima_rc_t::Cint begin
SMALL_TR_RADIUS = 0
FTARGET_ACHIEVED = 1
TRSUBP_FAILED = 2
@@ -17,63 +25,88 @@ end
NO_SPACE_BETWEEN_BOUNDS = 6
DAMAGING_ROUNDING = 7
ZERO_LINEAR_CONSTRAINT = 8
+ CALLBACK_TERMINATE = 30
INVALID_INPUT = 100
ASSERTION_FAILS = 101
VALIDATION_FAILS = 102
MEMORY_ALLOCATION_FAILS = 103
+ NULL_OPTIONS = 110
+ NULL_PROBLEM = 111
+ NULL_X0 = 112
+ NULL_RESULT = 113
+ NULL_FUNCTION = 114
+ PROBLEM_SOLVER_MISMATCH_NONLINEAR_CONSTRAINTS = 115
+ PROBLEM_SOLVER_MISMATCH_LINEAR_CONSTRAINTS = 116
+ PROBLEM_SOLVER_MISMATCH_BOUNDS = 117
end
function prima_get_rc_string(rc)
- @ccall libprimac.prima_get_rc_string(rc::Cint)::Cstring
+ @ccall libprimac.prima_get_rc_string(rc::prima_rc_t)::Cstring
end
-# typedef void ( * prima_obj ) ( const double x [ ] , double * f )
-const prima_obj = Ptr{Cvoid}
+# typedef void ( * prima_obj_t ) ( const double x [ ] , double * const f , const void * data )
+const prima_obj_t = Ptr{Cvoid}
+
+# typedef void ( * prima_objcon_t ) ( const double x [ ] , double * const f , double constr [ ] , const void * data )
+const prima_objcon_t = Ptr{Cvoid}
+
+# typedef void ( * prima_callback_t ) ( const int n , const double x [ ] , const double f , const int nf , const int tr , const double cstrv , const int m_nlcon , const double nlconstr [ ] , bool * const terminate )
+const prima_callback_t = Ptr{Cvoid}
-# typedef void ( * prima_objcon ) ( const double x [ ] , double * f , double constr [ ] )
-const prima_objcon = Ptr{Cvoid}
+struct prima_problem_t
+ n::Cint
+ calfun::prima_obj_t
+ calcfc::prima_objcon_t
+ x0::Ptr{Cdouble}
+ xl::Ptr{Cdouble}
+ xu::Ptr{Cdouble}
+ m_ineq::Cint
+ Aineq::Ptr{Cdouble}
+ bineq::Ptr{Cdouble}
+ m_eq::Cint
+ Aeq::Ptr{Cdouble}
+ beq::Ptr{Cdouble}
+ m_nlcon::Cint
+ f0::Cdouble
+ nlconstr0::Ptr{Cdouble}
+end
+
+function prima_init_problem(problem, n)
+ @ccall libprimac.prima_init_problem(problem::Ptr{prima_problem_t}, n::Cint)::Status
+end
-function prima_bobyqa(calfun, n, x, f, xl, xu, nf, rhobeg, rhoend, ftarget, maxfun, npt,
- iprint)
- @ccall libprimac.prima_bobyqa(calfun::prima_obj, n::Cint, x::Ptr{Cdouble},
- f::Ptr{Cdouble}, xl::Ptr{Cdouble}, xu::Ptr{Cdouble},
- nf::Ptr{Cint}, rhobeg::Cdouble, rhoend::Cdouble,
- ftarget::Cdouble, maxfun::Cint, npt::Cint,
- iprint::Cint)::Status
+struct prima_options_t
+ rhobeg::Cdouble
+ rhoend::Cdouble
+ maxfun::Cint
+ iprint::Cint
+ ftarget::Cdouble
+ npt::Cint
+ ctol::Cdouble
+ data::Ptr{Cvoid}
+ callback::prima_callback_t
end
-function prima_newuoa(calfun, n, x, f, nf, rhobeg, rhoend, ftarget, maxfun, npt, iprint)
- @ccall libprimac.prima_newuoa(calfun::prima_obj, n::Cint, x::Ptr{Cdouble},
- f::Ptr{Cdouble}, nf::Ptr{Cint}, rhobeg::Cdouble,
- rhoend::Cdouble, ftarget::Cdouble, maxfun::Cint,
- npt::Cint, iprint::Cint)::Status
+function prima_init_options(options)
+ @ccall libprimac.prima_init_options(options::Ptr{prima_options_t})::Status
end
-function prima_uobyqa(calfun, n, x, f, nf, rhobeg, rhoend, ftarget, maxfun, iprint)
- @ccall libprimac.prima_uobyqa(calfun::prima_obj, n::Cint, x::Ptr{Cdouble},
- f::Ptr{Cdouble}, nf::Ptr{Cint}, rhobeg::Cdouble,
- rhoend::Cdouble, ftarget::Cdouble, maxfun::Cint,
- iprint::Cint)::Status
+struct prima_result_t
+ x::Ptr{Cdouble}
+ f::Cdouble
+ cstrv::Cdouble
+ nlconstr::Ptr{Cdouble}
+ nf::Cint
+ status::Cint
+ message::Cstring
end
-function prima_cobyla(m_nlcon, calcfc, n, x, f, cstrv, nlconstr, m_ineq, Aineq, bineq, m_eq,
- Aeq, beq, xl, xu, nf, rhobeg, rhoend, ftarget, maxfun, iprint)
- @ccall libprimac.prima_cobyla(m_nlcon::Cint, calcfc::prima_objcon, n::Cint,
- x::Ptr{Cdouble}, f::Ptr{Cdouble}, cstrv::Ptr{Cdouble},
- nlconstr::Ptr{Cdouble}, m_ineq::Cint, Aineq::Ptr{Cdouble},
- bineq::Ptr{Cdouble}, m_eq::Cint, Aeq::Ptr{Cdouble},
- beq::Ptr{Cdouble}, xl::Ptr{Cdouble}, xu::Ptr{Cdouble},
- nf::Ptr{Cint}, rhobeg::Cdouble, rhoend::Cdouble,
- ftarget::Cdouble, maxfun::Cint, iprint::Cint)::Status
+function prima_free_result(result)
+ @ccall libprimac.prima_free_result(result::Ptr{prima_result_t})::Status
end
-function prima_lincoa(calfun, n, x, f, cstrv, m_ineq, Aineq, bineq, m_eq, Aeq, beq, xl, xu,
- nf, rhobeg, rhoend, ftarget, maxfun, npt, iprint)
- @ccall libprimac.prima_lincoa(calfun::prima_obj, n::Cint, x::Ptr{Cdouble},
- f::Ptr{Cdouble}, cstrv::Ptr{Cdouble}, m_ineq::Cint,
- Aineq::Ptr{Cdouble}, bineq::Ptr{Cdouble}, m_eq::Cint,
- Aeq::Ptr{Cdouble}, beq::Ptr{Cdouble}, xl::Ptr{Cdouble},
- xu::Ptr{Cdouble}, nf::Ptr{Cint}, rhobeg::Cdouble,
- rhoend::Cdouble, ftarget::Cdouble, maxfun::Cint,
- npt::Cint, iprint::Cint)::Status
+function prima_minimize(algorithm, problem, options, result)
+ @ccall libprimac.prima_minimize(algorithm::prima_algorithm_t, problem::prima_problem_t,
+ options::prima_options_t,
+ result::Ptr{prima_result_t})::Status
end