- v0.3.4
  - fix the order of SNP loadings for plink input
- v0.3.3
  - breaking change option =--svd= for choosing different SVD methods. default is PCAone algorithm2.
  - add permuting =BGEN= file with multithreading.
  - add Full SVD support by =--svd 3=
  - add log transformation support for bulk RNA-seq data by =--scale 1=
  - add binary file support
  - recover the original order for SNP =loadings=.
  - recover the eigenvalues for diploid genotype (0,1,2) data.

- v0.3.2
  - use =tab= as separator for output files

- v0.3.1
  - fix makefile for bioconda can't find zlib

- v0.3.0
  - version after first manuscript revision corresponding to the third version manuscript on biorxiv
  - fix algorithm2 to use one more omega updates between epoch.
  - parameter =--band= changed to =--windows=
  - support =CXXSTD= compiling option to use =c++17= standard. default =CXXSTD=c++11=
  - add =PCAoneR=, which implement the idea of PCAone in R but without out-of-core
  - colorful warning and error message. more checks and warnings.

- v0.2.1
  - bug fix for PCAngsd

- v0.2.0
  - add =--maf= option for SNPs filtering
  - faster parser for beagle file
  - optimization for PCAngsd
  - fix printing loadings for PCAoneA blockwise mode

- v0.1.9
  - command line options are re-designed
  - upgrade to zstd v1.5.2
  - recover the original order of SNPs loading for fancy batch mode
  - add =--no-shuffle= option, remove =--shuffle= option
  - default PCAoneF (fancy RSVD) algorithm is chose.

- v0.1.8
  - add -a, --tmp options
  - optimize makefile for conda

- v0.1.7
  - two releases =x64= and =avx2= for linux
  - add =conda install -c bioconda pcaone=
  - upgrade Spectra to v1.0.1
  - change oversamples default as max(10, k)
  - add logger

- v0.1.6
  - add --cpmed option to support raw counts for scRNAs
  - output elapsed I/O time and total wall time
  - remove pgenlib

- v0.1.5
  - publish PCAone on mac with =libiomp5= support
  - update documentation
  - add --shuffle option
  - optimization of FileCsv

- v0.1.4
  - add CSV format support for scRNAs data
  - add --printv to print out another eigen vectors
  - add -N and -M options

- v0.1.3
  - refactor Halko implementation
  - use Arnoldi as default method
  - add external/zlib
  - upgrade to Eigen 3.4.0
  - add structured permutation

- v0.1.2
  - use double instead of float to improve numerical accuracy
  - add --no-shuffle, --oversamples, --buffer options
  - disable checking padding region of plink bed
  - fix denominator too small
  - set band range as 4,8,16,32,64

- v0.1.1
  - supports bfile, bgen as input for both batch and blockwise mode
  - implement super power iteration for Halko
  - automatically permute plink bed file for fast halko
  - port [[https://github.com/jeremymcrae/bgen][jeremymcrae/bgen]] as bgen parser.
  - remove external BGEN v1.3 lib dependence
  - use libiomp5 instead of libgomp as multithreading RTL
  - fix bugs for PCAngsd algorithm

- v0.1.0
  - supports bfile as input for both batch and blockwise mode
  - supports bgen as input for batch mode
  - supports both EMU and PCAngsd algorithm
  - supports beagle as input for PCAngsd
  - external dependecy: Eigen v3.3.8, Spectra v0.9.0, BGEN v1.3
  - release two pre-compiled binary for Linux and Mac OSX (libiomp5 required).
