diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index e69de29..0000000
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..48a9e12
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+guide.pdf
+libsvm-3.91.tar.gz
+/log
+/LibSVM-svm-toy-48.png
+/libsvm-svm-toy-gtk.desktop
+/libsvm-svm-toy-qt.desktop
+/libsvm-3.20.tar.gz
+/libsvm-3.21.tar.gz
+/libsvm-3.23.tar.gz
diff --git a/LibSVM-svm-toy-48.png b/LibSVM-svm-toy-48.png
new file mode 100644
index 0000000..f13d50a
Binary files /dev/null and b/LibSVM-svm-toy-48.png differ
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 70ef916..0000000
--- a/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Makefile for source rpm: libsvm
-# $Id$
-NAME := libsvm
-SPECFILE = $(firstword $(wildcard *.spec))
-
-define find-makefile-common
-for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
-endef
-
-MAKEFILE_COMMON := $(shell $(find-makefile-common))
-
-ifeq ($(MAKEFILE_COMMON),)
-# attept a checkout
-define checkout-makefile-common
-test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
-endef
-
-MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
-endif
-
-include $(MAKEFILE_COMMON)
diff --git a/libsvm-3.17.pom b/libsvm-3.17.pom
new file mode 100644
index 0000000..7b7977b
--- /dev/null
+++ b/libsvm-3.17.pom
@@ -0,0 +1,36 @@
+
+ 4.0.0
+ tw.edu.ntu.csie
+ libsvm
+ 3.17
+ jar
+ LIBSVM
+ A Library for Support Vector Machines
+ http://www.csie.ntu.edu.tw/~cjlin/libsvm/
+
+
+ BSD 3-Clause License
+ http://www.csie.ntu.edu.tw/~cjlin/libsvm/COPYRIGHT
+
+
+
+ http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
+ http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
+
+
+
+ chih-jen.lin
+ Chih-Jen Lin
+ cjlin@csie.ntu.edu.tw
+
+
+
+ 1.5
+ 1.5
+ UTF-8
+
+
+ java
+
+
diff --git a/libsvm-svm-toy-qt.desktop b/libsvm-svm-toy-qt.desktop
new file mode 100644
index 0000000..1835271
--- /dev/null
+++ b/libsvm-svm-toy-qt.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=svm-toy-qt
+GenericName=svm-toy QT version
+Comment=QT version of svm-toy (libsvm demostration program)
+Exec=svm-toy-qt
+Icon=libsvm-svm-toy-qt-48
+StartupNotify=true
+Terminal=false
+Type=Application
+Categories=Education;Science;Math;DataVisualization;Qt
diff --git a/libsvm.javaDir.patch b/libsvm.javaDir.patch
new file mode 100644
index 0000000..5131c4f
--- /dev/null
+++ b/libsvm.javaDir.patch
@@ -0,0 +1,43 @@
+diff -up ./java/Makefile.javaDir ./java/Makefile
+--- ./java/Makefile.javaDir 2016-12-22 04:58:49.000000000 +1000
++++ ./java/Makefile 2018-04-17 12:11:53.773004141 +1000
+@@ -5,8 +5,8 @@ FILES = libsvm/svm.class libsvm/svm_mode
+ svm_train.class svm_predict.class svm_toy.class svm_scale.class
+
+ #JAVAC = jikes
+-JAVAC_FLAGS = -target 1.7 -source 1.7
+-JAVAC = javac
++JAVAC_FLAGS = -target 1.7 -source 1.7 -classpath ${CLASSPATH}
++JAVAC ?= javac
+ # JAVAC_FLAGS =
+ export CLASSPATH := .:$(CLASSPATH)
+
+@@ -19,8 +19,20 @@ all: $(FILES)
+ libsvm/svm.java: libsvm/svm.m4
+ m4 libsvm/svm.m4 > libsvm/svm.java
+
++javadoc: docs/index.html
++
++docs/index.html: $(FILES)
++ javadoc -d docs *.java libsvm/*.java
++
++install:
++ mkdir -p ${JAVA_TARGET_DIR}
++ install -m 644 libsvm.jar ${JAVA_TARGET_DIR}
++uninstall:
++ rm -fr ${JAVA_TARGET_DIR}
++
+ clean:
+ rm -f libsvm/*.class *.class *.jar libsvm/*~ *~ libsvm/svm.java
++ rm -rf docs
+
+ dist: clean all
+ rm *.class libsvm/*.class
+diff -up ./java/test_applet.html.javaDir ./java/test_applet.html
+--- ./java/test_applet.html.javaDir 2016-12-22 04:58:51.000000000 +1000
++++ ./java/test_applet.html 2018-04-17 11:51:17.927996424 +1000
+@@ -1 +1,3 @@
+-
++
++
++
diff --git a/libsvm.packageMain.patch b/libsvm.packageMain.patch
new file mode 100644
index 0000000..f594c5b
--- /dev/null
+++ b/libsvm.packageMain.patch
@@ -0,0 +1,102 @@
+diff -up ./Makefile.packageMain ./Makefile
+--- ./Makefile.packageMain 2013-03-31 17:06:44.000000000 +1000
++++ ./Makefile 2013-04-13 22:59:43.796601417 +1000
+@@ -1,11 +1,45 @@
+ CXX ?= g++
+-CFLAGS = -Wall -Wconversion -O3 -fPIC
++CFLAGS = ${RPM_CFLAGS} -Wconversion -fPIC
+ SHVER = 2
++export SHVER
+ OS = $(shell uname)
++MAKE = make
++DOT_LIBS=.
++LIBS= -L${DOT_LIBS} -lsvm
++export LIBSVM_VER
++IS_64:=$(shell /bin/uname -i | awk '/64/ {print 64}')
++PREFIXDIR?= /usr
++export PREFIXDIR
+
+-all: svm-train svm-predict svm-scale
++LIBDIR?=${PREFIXDIR}/lib${IS_64}
++export LIBDIR
+
+-lib: svm.o
++DATADIR?=${PREFIXDIR}/share
++export DATADIR
++
++BINDIR?=${PREFIXDIR}/bin
++export BINDIR
++
++INCLUDEDIR_INSTALL:=${DESTDIR}/${PREFIXDIR}/include
++export INCLUDEDIR_INSTALL
++
++LIBDIR_INSTALL:=${DESTDIR}/${LIBDIR}
++export LIBDIR_INSTALL
++
++DATADIR_INSTALL:=${DESTDIR}/${DATADIR}
++export DATA_INSTALL
++
++BINDIR_INSTALL:=${DESTDIR}/${BINDIR}
++export BINDIR_INSTALL
++
++all: lib svm-train svm-predict svm-scale svm-python svm-toy-qt
++
++lib: libsvm.so.$(SHVER) libsvm.so
++
++libsvm.so: libsvm.so.$(SHVER)
++ ln -sf libsvm.so.$(SHVER) libsvm.so
++
++libsvm.so.$(SHVER): svm.o
+ if [ "$(OS)" = "Darwin" ]; then \
+ SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \
+ else \
+@@ -14,12 +48,46 @@ lib: svm.o
+ $(CXX) $${SHARED_LIB_FLAG} svm.o -o libsvm.so.$(SHVER)
+
+ svm-predict: svm-predict.c svm.o
+- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
++ $(CXX) $(CFLAGS) svm-predict.c $(LIBS) -o svm-predict -lm
+ svm-train: svm-train.c svm.o
+- $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm
++ $(CXX) $(CFLAGS) svm-train.c $(LIBS) -o svm-train -lm
+ svm-scale: svm-scale.c
+ $(CXX) $(CFLAGS) svm-scale.c -o svm-scale
+ svm.o: svm.cpp svm.h
+ $(CXX) $(CFLAGS) -c svm.cpp
+ clean:
+- rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER)
++ rm -f *~ svm.o svm-train svm-predict svm-scale svm-toy/qt/svm-toy-qt
++ ${MAKE} -C python clean
++ ${MAKE} -C java clean
++svm-python:
++ ${MAKE} -C python
++
++svm-toy-qt:
++ ${MAKE} -C svm-toy/qt
++
++install: all
++ mkdir -p ${BINDIR_INSTALL}
++ install -m 755 svm-train ${BINDIR_INSTALL}
++ install -m 755 svm-predict ${BINDIR_INSTALL}
++ install -m 755 svm-scale ${BINDIR_INSTALL}
++ mkdir -p ${LIBDIR_INSTALL}
++ install -m 755 libsvm.so.$(SHVER) ${LIBDIR_INSTALL}
++# install package libsvm-devel
++ mkdir -p ${INCLUDEDIR_INSTALL}/libsvm
++ install -m 644 svm.h ${INCLUDEDIR_INSTALL}/libsvm
++# install package svm-toy
++ install -m 755 svm-toy/qt/svm-toy-qt ${BINDIR_INSTALL}
++# install examples
++ mkdir -p ${DATADIR_INSTALL}/libsvm/examples
++ install -m 644 heart_scale ${DATADIR_INSTALL}/libsvm/examples
++uninstall:
++ rm -f ${BINDIR_INSTALL}/svm-train
++ rm -f ${BINDIR_INSTALL}/svm-predict
++ rm -f ${BINDIR_INSTALL}/svm-scale
++ rm -fr ${DATADIR_INSTALL}/libsvm
++ rm -f ${INCLUDEDIR_INSTALL}/libsvm/svm.h
++ rm -f ${LIBDIR_INSTALL}/libsvm.so*
++ ${MAKE} -C python uninstall
++ ${MAKE} -C java uninstall
++ rm -f ${BINDIR_INSTALL}/svm-toy-qt
++
diff --git a/libsvm.spec b/libsvm.spec
new file mode 100644
index 0000000..b339b71
--- /dev/null
+++ b/libsvm.spec
@@ -0,0 +1,621 @@
+%define shver 2
+%global libdir_libsvm %{_libdir}/libsvm
+%global python3_libsvm_dir %{python3_sitearch}/libsvm
+%global maven_group_id tw.edu.ntu.csie
+%global pom_file_version 3.17
+%global pom_file_name JPP.%{maven_group_id}-%{name}.pom
+
+# EL <= 6 does not have enable_maven
+%if 0%{?rhel} != 0 && 0%{?rhel} <= 6
+%global java_dependency java
+%ifarch ppc64
+%bcond_with java
+%else
+%bcond_without java
+%endif
+%global cpp_std c++0x
+%else
+%define java_dependency java-headless
+%bcond_without java
+%bcond_without maven
+%global cpp_std c++11
+%endif
+
+
+Name: libsvm
+Version: 3.23
+Release: 7%{?dist}
+Summary: A Library for Support Vector Machines
+
+License: BSD
+URL: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
+Source0: http://www.csie.ntu.edu.tw/~cjlin/libsvm/%{name}-%{version}.tar.gz
+Source1: http://www.csie.ntu.edu.tw/~cjlin/libsvm/log
+Source2: http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
+Source4: libsvm-svm-toy-qt.desktop
+Source5: LibSVM-svm-toy-48.png
+Source6: http://central.maven.org/maven2/tw/edu/ntu/csie/libsvm/%{pom_file_version}/libsvm-%{pom_file_version}.pom
+Patch0: %{name}.packageMain.patch
+Patch2: %{name}.javaDir.patch
+Patch4: %{name}.toolsDir.patch
+Patch5: %{name}.svm-toy-qt5.patch
+BuildRequires: grep
+
+%description
+LIBSVM is an integrated software for support vector classification,
+(C-SVC, nu-SVC ), regression (epsilon-SVR, nu-SVR) and distribution
+estimation (one-class SVM ). It supports multi-class classification.
+
+%package devel
+Summary: Header file, object file, and source files of libsvm in C, C++ and Java
+BuildRequires: glibc-devel gawk
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+Header file, object file of libsvm in C, C++ and Java.
+Install this package if you want to develop programs with libsvm.
+
+%package -n python3-%{name}
+%{?python_provide:%python_provide python3-%{name}}
+Summary: Python3 tools and interfaces for libsvm
+BuildRequires: python3-devel gawk
+#gnuplot is required by easy.py
+Requires: %{name} = %{version}-%{release}
+Requires: gnuplot
+
+%description -n python3-%{name}
+Python3 tools and interfaces for libsvm.
+Install this package if you want to develop
+programs with libsvm in Python3.
+
+%if %{with java}
+%package java
+Summary: Java tools and interfaces for libsvm
+BuildRequires: java-devel >= 1.7.0
+BuildRequires: jpackage-utils
+%if %{with maven}
+BuildRequires: maven-local
+%endif
+Requires: %{java_dependency} >= 1.7.0
+Requires: jpackage-utils
+Requires: %{name} = %{version}-%{release}
+
+%description java
+Java tools and interfaces for libsvm.
+Install this package if you want to develop
+programs with libsvm in Java.
+
+%package javadoc
+Summary: Javadoc for libsvm
+BuildRequires: java-devel >= 1.7.0
+BuildRequires: jpackage-utils
+BuildArch: noarch
+Requires: %{name}-java = %{version}-%{release}
+
+%description javadoc
+Javadoc for libsvm
+%endif
+
+%package svm-toy-qt
+Summary: QT version of svm-toy (libsvm demonstration program)
+BuildRequires: desktop-file-utils
+BuildRequires: pkgconfig
+
+BuildRequires: qt5-qtbase-devel
+Requires: qt5-qtbase
+Requires: %{name} = %{version}-%{release}
+
+%description svm-toy-qt
+svm-toy is a libsvm demonstration program which has a qt-GUI to
+display the derived separating hyperplane.
+
+%prep
+%setup -q
+%patch0 -p0 -b .packageMain
+%patch2 -p0 -b .javaDir
+%patch4 -p0 -b .toolsDir
+%patch5 -p0 -b .svm-toy-qt5
+cp %{SOURCE1} ChangeLog
+cp %{SOURCE2} .
+cp %{SOURCE4} .
+cp %{SOURCE5} %{name}-svm-toy-qt-48.png
+
+# Fix the error: narrowing conversion
+sed -i.narrowing -e "s|{x,y,v}|{x,y,(signed char) v}|" svm-toy/qt/svm-toy.cpp
+sed -i -e "s|{x,y,current_value}|{x,y,(signed char) current_value}|" svm-toy/qt/svm-toy.cpp
+sed -i -e "s|(double)event->y()/YLEN, current_value|(double)event->y()/YLEN,(signed char) current_value|" svm-toy/qt/svm-toy.cpp
+
+%if %{with maven}
+# Update the POM file, which is stuck on version 3.17
+# pom_xpath_set does not work in rpm-4.11.1
+# as it generated something like
+#
+#
+# 3.20
+#
+#
+#
+%{__sed} -e 's/%{pom_file_version}/%{version}/' %{SOURCE6} > %{name}.pom
+%{__sed} -i 's|http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz|https://github.com/cjlin1/libsvm|' %{name}.pom
+%{__sed} -i 's|http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz|scm:git:https://github.com/cjlin1/libsvm.git|' %{name}.pom
+
+%mvn_file %{maven_group_id}:%{name} %{maven_group_id}/%{name}
+%endif
+
+%build
+%{__sed} -i 's/\r//' FAQ.html
+%{__sed} -i 's/\r//' ChangeLog
+make all RPM_CFLAGS="$RPM_OPT_FLAGS" LIBDIR="%{_libdir}" CPP_STD="%{cpp_std}"
+%if %{with java}
+make -C java all javadoc
+%endif
+mv python/README python/README-Python
+mv tools/README tools/README-Tools
+cp README java/README-Java
+cp README svm-toy/qt
+
+%if %{with maven}
+%mvn_artifact %{name}.pom java/%{name}.jar
+%endif
+
+%install
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot} LIBDIR=%{_libdir} LIBSVM_VER="%{version}" CPP_STD="%{cpp_std}"
+mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps/
+cp %{name}-svm-toy-qt-48.png %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps/
+mkdir -p %{buildroot}/%{_datadir}/applications
+cp %{name}-svm-toy-qt.desktop %{buildroot}/%{_datadir}/applications
+
+%__ln_s %{name}.so.%{shver} %{buildroot}/%{_libdir}/%{name}.so
+
+mkdir -p %{buildroot}/%{python3_libsvm_dir}
+echo -e "# This file is not in the original libsvm tarball, but added for convenience of import libsvm.\n\
+# This file is released under BSD license, just like the rest of the package.\n"\
+ > %{buildroot}/%{python3_libsvm_dir}/__init__.py
+install -p -m 755 tools/*.py %{buildroot}/%{python3_libsvm_dir}
+install -p -m 755 python/*.py %{buildroot}/%{python3_libsvm_dir}
+echo 'libsvm' > %{buildroot}/%{python3_sitearch}/libsvm.pth
+for p in %{buildroot}%{python3_libsvm_dir}/*.py;do
+ sed -i -e 's|#!/usr/bin/env python|#!%{__python3}|' $p
+done
+cd tools
+for p in *.py; do
+ ln -s %{python3_libsvm_dir}/$p %{buildroot}/%{_bindir}/svm-$p
+done
+cd -
+
+# Java
+%if %{with java}
+make -C java install JAVA_TARGET_DIR="%{buildroot}/%{_javadir}"
+mkdir -p %{buildroot}/%{_javadocdir}/%{name}
+cp -p -R java/docs/* %{buildroot}/%{_javadocdir}/%{name}
+%endif
+
+%if %{with maven}
+%mvn_install
+%endif
+
+# Desktop files
+desktop-file-install --delete-original \
+ --dir=%{buildroot}%{_datadir}/applications \
+ %{buildroot}/%{_datadir}/applications/%{name}-svm-toy-qt.desktop
+
+
+%ldconfig_scriptlets
+
+%files
+%doc COPYRIGHT FAQ.html ChangeLog guide.pdf
+%{_bindir}/svm-predict
+%{_bindir}/svm-scale
+%{_bindir}/svm-train
+%dir %{_datadir}/%{name}
+%{_datadir}/%{name}/examples
+%{_libdir}/%{name}.so.%{shver}
+
+%files devel
+%doc README
+%{_includedir}/%{name}/
+%{_libdir}/%{name}.so
+
+%files -n python3-%{name}
+%doc python/README-Python tools/README-Tools
+%{python3_libsvm_dir}
+%{_bindir}/svm-*.py
+%{python3_sitearch}/libsvm.pth
+
+%if %{with java}
+%if %{with maven}
+%files java -f .mfiles
+%else
+%files java
+%endif
+%defattr(-,root,root,-)
+%doc java/README-Java java/test_applet.html
+%{_javadir}/%{name}.jar
+%if %{with maven}
+%{_javadir}/%{maven_group_id}/%{name}.jar
+%endif
+%files javadoc
+%{_javadocdir}/%{name}
+%endif
+
+%files svm-toy-qt
+%doc svm-toy/qt/README
+%{_bindir}/svm-toy-qt
+%{_datadir}/icons/hicolor/48x48/apps/%{name}-svm-toy-qt-48.png
+%{_datadir}/applications/*%{name}-svm-toy-qt.desktop
+
+%changelog
+* Mon Aug 19 2019 Miro Hrončok - 3.23-7
+- Rebuilt for Python 3.8
+
+* Thu Jul 25 2019 Fedora Release Engineering - 3.23-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Fri Feb 01 2019 Fedora Release Engineering - 3.23-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Tue Jan 15 2019 Miro Hrončok - 3.23-4
+- Remove Python 2 subpackage (#1655696)
+
+* Tue Aug 28 2018 Zbigniew Jędrzejewski-Szmek - 3.23-3
+- Fix Provides/Obsoletes for old python subpackage
+
+* Thu Jul 26 2018 Ding-Yi Chen - 3.23-2
+- Add -javadoc subpackage
+- Use macro rhel instead of el_version
+- qt5 in EL should be qt5-qtbase
+
+* Thu Jul 19 2018 Ding-Yi Chen - 3.23-1
+- Upstream update to 3.23
+ + add more digits of predicted file, model file, scaled data and data
+ from matlab libsvmwrite: to .17g
+ + svm-toy-gtk is no longer supported
+ + Dependency qt is updated to qt5
+- probability output:
+ + if 2 classes, directly output the predited probabilities
+ rather than run the iterative algorithms for multi-class situations
+- java:
+ + libsvm.jar generated by java 1.7 rather than 1.5
+ + change the use of "_" in svm.java, which won't be allowed in later java
+- python:
+ + split to python2 and python3
+
+* Fri Jul 13 2018 Fedora Release Engineering - 3.21-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Feb 07 2018 Fedora Release Engineering - 3.21-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 3.21-6
+- Python 2 binary package renamed to python2-libsvm
+ See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
+
+* Thu Aug 03 2017 Fedora Release Engineering - 3.21-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering - 3.21-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Fri Feb 10 2017 Fedora Release Engineering - 3.21-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Mon Nov 07 2016 Than Ngo - 3.21-2
+- bz#1392340, enable java part on ppc64
+
+* Wed Jul 20 2016 Ding-Yi Chen - 3.21-1
+- Upstream update to 3.21
+- Fixes Bug 1277450 - libsvm(-java) remove versioned jars from {_javadir}
+
+* Wed Jun 17 2015 Fedora Release Engineering - 3.20-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Sat May 02 2015 Kalev Lember - 3.20-4
+- Rebuilt for GCC 5 C++11 ABI change
+
+* Tue Jan 20 2015 Ding-Yi Chen - 3.20-3
+- Fix for RHEL6
+
+* Tue Jan 20 2015 Ding-Yi Chen - 3.20-2
+- Upstream update to 3.20
+
+* Fri Dec 19 2014 Jerry James - 3.18-7
+- Install maven POM and depmaps (bz 1175898)
+
+* Sun Aug 17 2014 Fedora Release Engineering - 3.18-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Thu Jul 10 2014 Richard Hughes - 3.18-5
+- Do not use vendor prefixes on Fedora
+
+* Sat Jun 07 2014 Fedora Release Engineering - 3.18-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon Apr 28 2014 Ding-Yi Chen - 3.18-3
+- EPEL5 desktop files need vendor.
+
+* Mon Apr 28 2014 Ding-Yi Chen - 3.18-2
+- Fixed Bug 1090844 - libsvm-java has unresolved dependencies on epel6 testing
+
+* Tue Apr 22 2014 Ding-Yi Chen - 3.18-1
+- Upstream update to 3.18
+- svm.cpp and svm-scale.c: check return values of fscanf
+- matlab interface: Makefile no longer handles octave
+ because make.m should be used
+
+* Fri Mar 28 2014 Michael Simacek - 3.17-4
+- Use Requires: java-headless rebuild (#1067528)
+
+* Sat Aug 03 2013 Fedora Release Engineering - 3.17-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Thu Apr 25 2013 Jon Ciesla - 3.17-2
+- Drop desktop vendor tag.
+
+* Sat Apr 13 2013 Ding-Yi Chen - 3.17-1
+- Upstream update from 3.13 to 3.17
+ svm.c and svm.h:
+ add sv_indices in model structure, so users can know which training instances are SVs
+ two library funs svm_get_sv_indices and svm_get_nr_sv are added
+ max_iter warning moved to stderr so -q won't disable it
+ svm-train.c:
+ usage modified to stress that multiclass is supported
+ svm-predict.c:
+ add -q for svm-predict
+ svm-scale.c:
+ issue a warning if feature indices do not start from 1
+ issue a warning for inconsistency between scaling-factor file and input file
+ tools:
+ subset.py is written to be much faster
+ fix the bug of not freeing sv_indices
+ tools/grid.py:
+ -null option: allow the search on C or g only
+ -resume option: resume tasks from an earlier run
+ can be called as a python module
+ python interface:
+ local package searched first
+ libsvm options can be str or list
+ param.show() becomes print(param)
+ tools/:
+ easy.py fails in 3.15. Fix it by modifying grid.py
+ svm.cpp:
+ if class labels are 1 and -1, ensure labels[0] = 1 and labels[1] = -1
+ initialize model->sv_indices as null in svm_load_model
+ if nr_fold > # data, change nr_fold to be # data and ro leave-one-out cv
+ matlab interface:
+ handle the problem where output variables are not specified
+
+* Thu Feb 14 2013 Fedora Release Engineering - 3.12-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Thu Jul 19 2012 Fedora Release Engineering - 3.12-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed Apr 04 2012 Ding-Yi Chen - 3.12-1
+- Upstream update:
+ svm-toy: support loading/saving of regression data
+ python interface: handle the issue of the "0th" feature if using lists
+ tools/grid.py: not redrawing contour if c,g, cv doesn't change
+ add setlocale when saving and loading model so not affected by users' locale
+
+* Thu Jan 12 2012 Ding-Yi Chen - 3.11-3
+- Fixed Bug 646154 - libsvm-python's pth is not set correctly
+
+* Fri Jun 17 2011 Ding-Yi Chen - 3.11-1
+- Upstream update:
+ + Set max number of iterations in the main loop of solvers
+ + matlab:
+ new make.m for unix/mac/windows and for matlab/octave
+ + matlab and python:
+ fix a problem that decision values returned by svmpredict is empty if number of classes = 1
+
+* Fri Jun 17 2011 Ding-Yi Chen - 3.1-2
+- Fix the build error on EL-5
+
+* Tue Jun 14 2011 Ding-Yi Chen - 3.1-1
+- svm tools is now installed in /usr/bin as svm-*.py
+ i.e. tools/easy.py is linked as svm-easy.py.
+- Upstream update:
+ + MATLAB interface:
+ + Merge matlab interface to core libsvm
+ + Using mexPrintf() when calling info() in MATLAB interface.
+ + Both 32- and 64-bit windows binary files are provided
+ + Java:
+ Math.random is replaced by Random in java interface
+ + Python interface:
+ subroutines to get SVs
+ relative path to load *.dll and *.so
+ + svm.cpp:
+ null pointer check before release memory in svm_free_model_content()
+ svm_destroy_model() no longer supported.
+ + svm-train.c and svm-predict.c
+ Better format check in reading data labels
+ + svm-toy:
+ fix the svm_toy dialog path
+ + tools:
+ Using new string formatting/encoding in tools/*.py
+ clearer png output, fix grid.py legend
+
+* Tue Feb 08 2011 Fedora Release Engineering - 3.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Tue Dec 14 2010 Ding-Yi Chen - 3.0-2
+- Fixed [Bug 661404] New: Wrong symbolic link libsvm.so
+
+* Mon Nov 08 2010 Ding-Yi Chen - 3.0-1
+- Fixed the spelling errors of svm-toy-gtk and svm-toy-qt
+- Upstream update:
+ * Move model structure to svm.h
+ * Two functions for freeing a model (content or the whole model)
+ * QD from Qfloat to double (better precision because SSE on 64-bit machines less accurate than i387 on 32-bit
+ * exit status for checkdata.py
+ * old python interface (swig) is removed
+
+* Wed Jul 21 2010 David Malcolm - 2.91-2
+- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
+
+* Wed Apr 07 2010 Ding-Yi Chen - 2.91-1
+- Fixed Bug 564887 - FTBFS libsvm-2.90-3.fc13
+- Upstream update:
+ * completely new python interface using ctype
+ * new way to set the print_string function
+ * Java: able to load model from a BufferedReader directly
+ * fix grid.py so -log2c can be run under python 2.6 or after
+
+* Thu Nov 05 2009 Ding-Yi Chen - 2.90-2
+- Obsoletes libsvm-java for ppc and ppc64.
+
+* Wed Nov 04 2009 Ding-Yi Chen - 2.90-1
+- Upstream update to 2.9, change to 2.90 for conveniently update.
+ + tools/*.py can be run under python 3.0
+ + svm_set_quiet() in python interface to disable outputs
+ + check gamma < 0
+ + internal functions to be static
+
+* Fri Sep 18 2009 Ding-Yi Chen - 2.89-4
+- Fixed [Bug 524108] put libsvm.jar into _javadir
+ + Move livsvm.jar to _javadir
+ + Move test_applet.html to _datadir/doc/libsvm-
+- Buildrequire changed to java-devel>=1.5.0, jpackage-utils
+- Require changed to java>=1.5.0, jpackage-utils
+
+* Wed Sep 16 2009 Ding-Yi Chen - 2.89-3
+- Fix the building for EL-5
+ Note that libsvm-java on ppc and ppc64 for EL-5 is excluded,
+ as java-1.6.0-openjdk-devel for them do not exist yet.
+- Change the Java buildrequires from java-sdk to java-1.6.0-openjdk-devel
+- Fix [Bug 521194] Python: 'import libsvm' doesn't work.
+ By adding __init__.py to libsvm_python_dir
+
+* Sat Jul 25 2009 Fedora Release Engineering - 2.89-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Fri Apr 03 2009 Ding-Yi Chen - 2.89-1
+- Upstream Update to 2.89:
+ + reduce input/loading time of svm-train/svm-predict by half
+ + pointer function so users can specify their own outputs
+ + remove info_flush()
+ + a extern variable libsvm_version
+ + svm-train -q option (disable outputs)
+ + svm-scale: warning if more nonzero produced
+ + easy.py: popel.communiate() to avoid some deadlock (if lots of
+ outputs when #classes is large)
+
+* Mon Nov 10 2008 Ding-Yi Chen - 2.88-2
+- Fix java BuildRequire and Build
+- javadoc have been removed because ppc and ppc64 do not have a
+ suitable package to build javadoc in F-8, nor does javadoc
+ provide much useful information.
+
+
+* Wed Nov 05 2008 Ding-Yi Chen - 2.88-0
+- Note:
+ + SO version now follows upstream, i.e. SHVER=1, as upstream start to build shared library now.
+ Be aware that previously SO version of libsvm.so is libsvm.so.2.86, which looks higher than
+ the current SO version libsvm.so.1.
+ + Replaced java-1.5.0-gcj-devel with java-1.6.0-openjdk-devel.
+ + java sub-package now have javadoc.
+- Upstream update
+ + From 2.87: 2008/10/13
+ * svm-toy/qt updated to qt4 from qt3
+ * fix a bug in svm-scale.c
+ * max feature index of -r file is considered
+ * Makefile: add make lib; add -Wconversion and -fPIC in Makefile
+ * Add "rb" in load_model of svm.cpp
+ * Simplify do_shrinking of svm.cpp
+ * Change the order of loops in reconstrict_gradient of svm.cpp
+ * save the number of kernel evaluations
+ * Add python/setup.py
+ + From 2.88: 2008/10/30
+ * better gradient reconstructions
+ * issue a warning when -h 0 may be faster
+
+* Tue Apr 29 2008 Ding-Yi Chen - 2.86-13
+- Fix svm-toy-qt clear button does not clear.
+ (from Hsiang-Fu Yu in National Taiwan University)
+
+
+* Thu Apr 3 2008 Ding-Yi Chen - 2.86-12
+- Correct changelog date
+
+* Thu Apr 3 2008 Ding-Yi Chen - 2.86-11
+- Fix the Qt path problem
+
+* Wed Apr 2 2008 Ding-Yi Chen - 2.86-4
+- Support both Qt3 for F8 and earlier, and Qt4 for F9
+
+* Tue Apr 1 2008 Ding-Yi Chen - 2.86-0
+- Upstream update to 2.86
+ - svm-scale for java
+ - version number in svm.h and svm.m4
+ - rename svmtrain.exe to svm-train.exe
+ - python: while 1 --> while True, Popen -> call
+ - show best parameters on the contour of grid.py
+- LIBSVM_VER_MAJOR and LIBSVM_VER_MINOR are defined in libsvm.spec instead in
+
+* Tue Mar 11 2008 Ding-Yi Chen - 2.85-6
+- Fix build error.
+
+* Mon Mar 10 2008 Ding-Yi Chen - 2.85-5
+- [Bug 436392]: Fix by copy from right place.
+- Add desktop files and icons for svm-toy-gtk and svm-toy-qt
+
+* Mon Feb 11 2008 Ding-Yi Chen - 2.85-4
+- Move gnuplot from BuildRequires to Requires
+
+* Thu Feb 07 2008 Ding-Yi Chen - 2.85-3
+- Fix linker name (libsvm.so)
+- Linked to dynamic libraries
+
+* Tue Feb 05 2008 Ding-Yi Chen - 2.85-2
+- Fix svm-toy-qt build error
+
+* Tue Feb 05 2008 Ding-Yi Chen - 2.85-1
+- Fix svm-toy-gtk build error
+
+* Mon Feb 04 2008 Ding-Yi Chen - 2.85-0
+- Upgrade to 2.85
+- Include guide.pdf in main package
+- Change the dependent from eclipse-ecj to java-1.5.0-gcj
+- Add svm-toy-gtk
+- Add svm-toy-qt
+
+* Thu Dec 20 2007 Ding-Yi Chen - 2.84-9
+- [Bug 254091] Comment 19
+- Fix python/Makefile
+
+* Thu Dec 13 2007 Ding-Yi Chen - 2.84-8
+- Fix improper sed.
+- Change ldconfig to /sbin/ldconfig
+- Add gnuplot dependency for libsvm-python, as tools/easy.py needs it.
+
+* Mon Dec 03 2007 Ding-Yi Chen - 2.84-7
+- [Bug 254091] Review Request: libsvm - A Library for Support Vector Machines (Comment #12)
+
+* Wed Sep 26 2007 Ding-Yi Chen - 2.84-6
+- Add defattr to each subpackage
+- Move libsvm.so to libsvm
+
+* Mon Sep 24 2007 Ding-Yi Chen - 2.84-5
+- Split out libsvm-java
+- Add libsvm.so
+
+* Thu Aug 30 2007 Ding-Yi Chen - 2.84-4
+- Refined description.
+- Fix the /tmp/python.ver problem
+
+* Mon Aug 27 2007 Ding-Yi Chen - 2.84-3
+- Fix dependency problem
+
+* Mon Aug 27 2007 Ding-Yi Chen - 2.84-2
+- Fix mock error
+- Support Python 2.4 and Python 2.5
+
+* Mon Aug 27 2007 Ding-Yi Chen - 2.84-1
+- Fix rpmlint error
+- Move python related files to libsvm-python
+
+* Fri Aug 17 2007 Ding-Yi Chen - 2.84-0
+- initial packaging
+
+
diff --git a/libsvm.svm-toy-qt5.patch b/libsvm.svm-toy-qt5.patch
new file mode 100644
index 0000000..9d589c2
--- /dev/null
+++ b/libsvm.svm-toy-qt5.patch
@@ -0,0 +1,28 @@
+diff -up ./svm-toy/qt/Makefile.svm-toy-qt5 ./svm-toy/qt/Makefile
+--- ./svm-toy/qt/Makefile.svm-toy-qt5 2018-07-16 00:16:58.000000000 +1000
++++ ./svm-toy/qt/Makefile 2018-07-18 18:10:40.157485623 +1000
+@@ -1,13 +1,14 @@
+ # use ``export QT_SELECT=qt5'' in a command window for using qt5
+ # may need to adjust the path of header files
+ CXX? = g++
+-INCLUDE = /usr/include/x86_64-linux-gnu/qt5
+-CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtWidgets -I$(INCLUDE)/QtGui -I$(INCLUDE)/QtCore -fPIC -std=c++11
++INCLUDE = /usr/include/qt5
++CPP_STD ?= c++11
++CFLAGS = ${RPM_CFLAGS} -I$(INCLUDE) -I$(INCLUDE)/QtWidgets -I$(INCLUDE)/QtGui -I$(INCLUDE)/QtCore -fPIC -std=${CPP_STD}
+ LIB = -lQt5Widgets -lQt5Gui -lQt5Core
+-MOC = /usr/bin/moc
++MOC ?= /usr/bin/moc-qt5
+
+ svm-toy: svm-toy.cpp svm-toy.moc ../../svm.o
+- $(CXX) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy $(LIB)
++ $(CXX) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy-qt $(LIB)
+
+ svm-toy.moc: svm-toy.cpp
+ $(MOC) svm-toy.cpp -o svm-toy.moc
+@@ -16,4 +17,4 @@ svm-toy.moc: svm-toy.cpp
+ make -C ../.. svm.o
+
+ clean:
+- rm -f *~ svm-toy svm-toy.moc ../../svm.o
++ rm -f *~ svm-toy-qt svm-toy.moc ../../svm.o
diff --git a/libsvm.toolsDir.patch b/libsvm.toolsDir.patch
new file mode 100644
index 0000000..b0375b9
--- /dev/null
+++ b/libsvm.toolsDir.patch
@@ -0,0 +1,30 @@
+diff -up ./tools/easy.py.toolsDir ./tools/easy.py
+--- ./tools/easy.py.toolsDir 2013-03-31 17:06:49.000000000 +1000
++++ ./tools/easy.py 2013-04-13 23:17:53.399526910 +1000
+@@ -12,10 +12,10 @@ if len(sys.argv) <= 1:
+
+ is_win32 = (sys.platform == 'win32')
+ if not is_win32:
+- svmscale_exe = "../svm-scale"
+- svmtrain_exe = "../svm-train"
+- svmpredict_exe = "../svm-predict"
+- grid_py = "./grid.py"
++ svmscale_exe = "/usr/bin/svm-scale"
++ svmtrain_exe = "/usr/bin/svm-train"
++ svmpredict_exe = "/usr/bin/svm-predict"
++ grid_py = "/usr/bin/svm-grid.py"
+ gnuplot_exe = "/usr/bin/gnuplot"
+ else:
+ # example for windows
+diff -up ./tools/grid.py.toolsDir ./tools/grid.py
+--- ./tools/grid.py.toolsDir 2013-03-31 17:06:50.000000000 +1000
++++ ./tools/grid.py 2013-04-13 23:18:53.964522769 +1000
+@@ -18,7 +18,7 @@ class GridOption:
+ def __init__(self, dataset_pathname, options):
+ dirname = os.path.dirname(__file__)
+ if sys.platform != 'win32':
+- self.svmtrain_pathname = os.path.join(dirname, '../svm-train')
++ self.svmtrain_pathname = '/usr/bin/svm-train'
+ self.gnuplot_pathname = '/usr/bin/gnuplot'
+ else:
+ # example for windows
diff --git a/log b/log
new file mode 100644
index 0000000..8531e06
--- /dev/null
+++ b/log
@@ -0,0 +1,308 @@
+1.04: 2000/6/17, add "load" button to svm-toy. README
+file updated.
+
+2.0: 2000/8, major updates. Include nu-svm, one-class svm, and svr
+
+2.01: 2000/9/22, correct the calculation of obj value and number of bounded support vectors
+
+2.02: 2000/9/29, replace b^2/2 newsvm to regular nu svm.
+
+2.03: 2000/10/24 some improvements on the computational speed
+
+2.1: 2000/12/19 Java version included, regression demonstrated in svm-toy
+
+2.2: 2001/1/16 multi-class classification, nu-SVR, remove epsilon_a
+
+2.3: 2001/3/15 c+-, cross validation, fix some minor bugs
+
+2.31: 2001/4/12 fix one bug on one-class SVM, use float for Cache
+
+2.32: 2001/9/23
+ 1. max line number of svm-scale now dynamic
+ 2. gcc 3.0 problem: now g++ always used
+ 3. java code in a "libsvm" package
+ 4. avoid a problem when compiled with Borland C++ builder
+
+2.33: 2001/12/1
+ Python interface added
+
+2.34: 2002/6/15
+ Add the subroutine svm_check_parameter in svm.cpp
+ --> better error handling
+ fix bug of python interface for handling different weights
+ fix bug of cross validation in svm-train.c
+
+2.35: 2002/6/16
+ libsvm.jar was not compiled correctly in 2.34
+
+2.36: 2002/8/4
+ grid.py added: contour plot of CV accuracy
+ fix several bugs
+
+2.4: 2003/4/1
+ svm.cpp
+ non-psd kernel using max(...,0) in svm.cpp
+ python interface
+ python interface bug (nu-svm)
+ grid.py
+ -log2c and -log2c for grid.py
+ output current best
+ coarse grid as default (2)
+ ssh for grid.py
+ improvements of scaling
+
+2.5: 2003/11/13
+ subroutines for accessing decision values and number of labels.
+ for svm.cpp, java, and python interface
+ fix bug of svm-scale.c (about -r and -s factors)
+ use fscanf but not sscanf in svm-predict.c (faster)
+ makefile for windows
+ add "using namespace std;" in some .java files
+ improve easy.py: output cv rate, error messages printed
+ better checking
+ better python interface example svm_test.py
+ and some minor updates
+
+2.6: 2004/04/01
+ Probability estimates for classification/regression
+ Python interface: use swig 1.3 instead of 1.1
+ Cross validation becomes a library subroutine
+ A few minor corrections: (not completely listed)
+ more interface functions such as getting svm_type
+ print nu only when Cp=Cn
+ floor division in python interface
+
+2.7: 2004/11/10
+ Stratified cross validation
+ Better faq
+ Scaling: support storing the factor of y
+ A few minor updates:
+ class QMatrix added
+ improve the use of easy.py and grid.py on windows
+ grid.py: same CV and same g: use smaller C
+ sparse input for python interface
+ working set selection: < to <=
+
+2.71: 2004/11/20
+ fix a java bug introduced from 2.6 to 2.7
+
+2.8: 2005/04/01
+ new working set selection via second order information
+ fix minor changes/corrections:
+ problem when cache size less than two kernel columns
+ -v #data -> stratified CV is not loo -> ensure loo is done
+ problem of typing "svm-train -c" only
+ problem of "svm-train -n 1 -s 3 ..."
+ python interface makefile: -fPIC for 32/64bit
+ color change in svmtoy
+ makefile in building QT svmtoy
+
+2.81: 2005/11/20
+ add a python script subset.py for subsampling
+ slightly modify the working set so it's exact the same as the paper
+ default cache size to 100 MB
+
+2.82: 2006/04/01
+ precomputed kernel
+ directly implement a fast powi() function
+ poly degree double to int
+ minor corrections:
+ java code for CV
+2.83: 2006/11/17
+ Fix the bug of -t 3
+ better checking load/save in svm-train.c/svm-predict.c/svm.cpp
+ remove redundant var pos in svm_predict_values (thanks to Albert Strasheim)
+ Better descriptions in README for the precomputed kernel
+
+2.84: 2007/04/01
+ Improve the shrinking code: faster for some cases
+ Code more 64-bit friendly: allow large -m
+ In Solver, b is replaced by p
+ Subroutine max_violating_pair removed. Things are directly
+ written in do_shrinking().
+ Modify do_shrinking() so variable names are the same as libsvm
+ document
+
+2.85: 2007/11/6
+ fix minor memory leak in svm-predict.c
+ add tools/checkdata.py
+ java to 1.5
+ Makefile: CXX?
+ Makefile.win: avoid warning from .net 2005
+ avoid warning of gcc 4.2
+ sigma 0.001 to 1e-12; in Newton direction of prob output
+ 2 * (long int) l avoid warning of old Visual C++
+ grid.py: avoid gnuplot problem on windows
+
+2.86: 2008/04/01
+ svm-scale for java
+ version number in svm.h and svm.m4
+ rename svmtrain.exe to svm-train.exe
+ python: while 1 --> while True, Popen -> call
+ show best parameters on the contour of grid.py
+
+2.87: 2008/10/13
+ svm-toy/qt updated to qt4 from qt3
+ fix a bug in svm-scale.c
+ max feature index of -r file is considered
+ Makefile: add make lib; add -Wconversion and -fPIC in Makefile
+ Add "rb" in load_model of svm.cpp
+ Simplify do_shrinking of svm.cpp
+ Change the order of loops in reconstrict_gradient of svm.cpp
+ save the number of kernel evaluations
+ Add python/setup.py
+
+2.88: 2008/10/30
+ better gradient reconstructions
+ issue a warning when -h 0 may be faster
+
+2.89: 2009/04/01
+ reduce input/loading time of svm-train/svm-predict by half
+ pointer function so users can specify their own outputs
+ remove info_flush()
+ a extern variable libsvm_version
+ svm-train -q option (disable outputs)
+ svm-scale: warning if more nonzero produced
+ easy.py: popel.communiate() to avoid some deadlock (if lots of
+ outputs when #classes is large)
+
+2.9: 2009/11/1
+ tools/*.py can be run under python 3.0
+ svm_set_quiet() in python interface to disable outputs
+ check gamma < 0
+ internal functions to be static
+
+2.91: 2010/04/01
+ completely new python interface using ctype
+ new way to set the print_string function
+ Java: able to load model from a BufferedReader directly
+ fix grid.py so -log2c can be run under python 2.6 or after
+
+3.0: 2010/09/13
+ Move model structure to svm.h
+ Two functions for freeing a model (content or the whole model)
+ QD from Qfloat to double (better precision because SSE on 64-bit machines less accurate than i387 on 32-bit
+ exit status for checkdata.py
+ old python interface (swig) is removed
+
+3.1: 2011/04/01
+ MATLAB interface:
+ Merge matlab interface to core libsvm
+ Using mexPrintf() when calling info() in MATLAB interface.
+ Both 32- and 64-bit windows binary files are provided
+ Java:
+ Math.random is replaced by Random in java interface
+ Python interface:
+i subroutines to get SVs
+ relative path to load *.dll and *.so
+ svm.cpp:
+ null pointer check before release memory in svm_free_model_content()
+ svm_destroy_model() no longer supported.
+ svm-train.c and svm-predict.c
+ Better format check in reading data labels
+ svm-toy:
+ fix the svm_toy dialog path
+ tools:
+ Using new string formatting/encoding in tools/*.py
+ clearer png output, fix grid.py legend
+
+3.11: 2011/11/5
+ Set max number of iterations in the main loop of solvers
+ matlab:
+ new make.m for unix/mac/windows and for matlab/octave
+ matlab and python:
+ fix a problem that decision values returned by svmpredict is empty if number of classes = 1
+
+3.12: 2012/04/01
+ svm-toy: support loading/saving of regression data
+ python interface: handle the issue of the "0th" feature if using lists
+ tools/grid.py: not redrawing contour if c,g, cv doesn't change
+ add setlocale when saving and loading model so not affected by users' locale
+
+3.13: 2012/11/06
+ svm.c and svm.h:
+ add sv_indices in model structure, so users can know which training instances are SVs
+ two library funs svm_get_sv_indices and svm_get_nr_sv are added
+ max_iter warning moved to stderr so -q won't disable it
+ svm-train.c:
+ usage modified to stress that multiclass is supported
+ svm-predict.c:
+ add -q for svm-predict
+ svm-scale.c:
+ issue a warning if feature indices do not start from 1
+ issue a warning for inconsistency between scaling-factor file and input file
+ tools:
+ subset.py is written to be much faster
+
+3.14: 2012/11/16
+ fix a bug: we didn't re-compile windows binary after updating svm.def
+
+3.15: 2013/1/27
+ fix the bug of not freeing sv_indices
+ tools/grid.py:
+ -null option: allow the search on C or g only
+ -resume option: resume tasks from an earlier run
+ can be called as a python module
+ python interface:
+ local package searched first
+ libsvm options can be str or list
+ param.show() becomes print(param)
+
+3.16: 2013/1/27
+ tools/:
+ easy.py fails in 3.15. Fix it by modifying grid.py
+
+3.17: 2013/04/01
+ svm.cpp:
+ if class labels are 1 and -1, ensure labels[0] = 1 and labels[1] = -1
+ initialize model->sv_indices as null in svm_load_model
+ if nr_fold > # data, change nr_fold to be # data and ro leave-one-out cv
+ matlab interface:
+ handle the problem where output variables are not specified
+
+3.18: 2014/04/01
+ svm.cpp and svm-scale.c:
+ check return values of fscanf
+ matlab interface:
+ Makefile no longer handles octave because make.m should be used
+
+3.19: 2014/10/27
+ svm.cpp:
+ use size_t rather than long int in some places for 64-bit windows support
+ matlab interface:
+ use size_t and mwIndex to avoid type conversions
+ python interface:
+ use __all__
+
+3.20: 2014/11/15
+ matlab interface:
+ fix a bug in libsvmwrite.c introduced in 3.19 (cannot run on windows)
+
+3.21: 2015/12/14
+ pre-built windows exe files changed from 32 to 64 bit
+ matlab interface:
+ now use #include "../svm.h"
+ fix some minor issues in make.m of matlab interface
+
+3.22: 2016/12/22
+ probability output:
+ if 2 classes, directly output the predited probabilities
+ rather than run the iterative algorithms for multi-class situations
+ java:
+ libsvm.jar generated by java 1.7 rather than 1.5
+ change the use of "_" in svm.java, which won't be allowed in later java
+
+3.23: 2018/7/15
+ add more digits of predicted file, model file, scaled data and data from matlab libsvmwrite: to %.17g
+ revise svm-scale.c so features in test data that do not appear in training data are scaled to zero.
+ remove unnecessary tab or space in all files
+ python interface:
+ add Scipy support
+ add scaling (csr_find_scale_param and csr_scale functions)
+ put some utility functions identical in LIBLINEAR to commonutil.py.
+ functions for scaling are put in commonutil.py.
+ sort column indices of csr matrix before training as feature indices must be ascending
+ convert Qt version of svm-toy from Qt4 to Qt5
+ remove gtk svm-toy because we stop maintaining this tool
+ minor improvement of descriptions in README
+
\ No newline at end of file
diff --git a/sources b/sources
index e69de29..77237b8 100644
--- a/sources
+++ b/sources
@@ -0,0 +1,2 @@
+SHA512 (guide.pdf) = 5e97a7b76ad4217d7987c5c07f0420e780b61b82fb88fe0e6015681fabb5078980b280cec4a0a7208ea225b9fa84de878295039f4513df26f0d404a21812e44c
+SHA512 (libsvm-3.23.tar.gz) = 15e1a22a9075d3910414b0519b2ce8a93edc42be76a034d31435dc9463b08fbc510b806a3e6f64abff4ba3da771582436182e4e7d658ed2e54f311bc8cdbc121