diff options
Diffstat (limited to 'gsl-1.9/cblas')
266 files changed, 46306 insertions, 0 deletions
diff --git a/gsl-1.9/cblas/ChangeLog b/gsl-1.9/cblas/ChangeLog new file mode 100644 index 0000000..f6949d5 --- /dev/null +++ b/gsl-1.9/cblas/ChangeLog @@ -0,0 +1,30 @@ +2003-01-21 Brian Gough <brian.gough@network-theory.co.uk> + + * test.m: skip trans=113 for complex matrix on SYRK tests. + +Tue Feb 19 20:50:27 2002 Brian Gough <bjg@network-theory.co.uk> + + * gsl_cblas.h: added extern "C" + +Mon Jul 2 22:21:00 2001 Brian Gough <bjg@network-theory.co.uk> + + * test.c: added missing #include <config.h> + +Fri Apr 27 19:53:10 2001 Brian Gough <bjg@network-theory.co.uk> + + * source_tpmv_r.h: moved index declarations to more restricted scope + + * source_rotmg.h: changed declaration y1 to y in order to avoid + confusion with function y0(x) in C library. Also changed x1 to x. + + * source_syr2k_r.h: error where lda was used instead of ldb in + syr2k_r was not picked up by any tests! Now fixed + +Thu Apr 12 16:46:16 2001 Brian Gough <bjg@network-theory.co.uk> + + * all routines now included for Level 1, 2, 3-- passes blas test + suite for numerical results, but no error handling yet + + * split out from blas directory to make an independent blas + library + diff --git a/gsl-1.9/cblas/Makefile.am b/gsl-1.9/cblas/Makefile.am new file mode 100644 index 0000000..2d59fee --- /dev/null +++ b/gsl-1.9/cblas/Makefile.am @@ -0,0 +1,19 @@ +lib_LTLIBRARIES = libgslcblas.la +libgslcblas_la_LDFLAGS = -version-info $(GSL_LT_CBLAS_VERSION) + +pkginclude_HEADERS = gsl_cblas.h + +INCLUDES= -I$(top_srcdir) + +libgslcblas_la_SOURCES = sasum.c saxpy.c scasum.c scnrm2.c scopy.c sdot.c sdsdot.c sgbmv.c sgemm.c sgemv.c sger.c snrm2.c srot.c srotg.c srotm.c srotmg.c ssbmv.c sscal.c sspmv.c sspr.c sspr2.c sswap.c ssymm.c ssymv.c ssyr.c ssyr2.c ssyr2k.c ssyrk.c stbmv.c stbsv.c stpmv.c stpsv.c strmm.c strmv.c strsm.c strsv.c dasum.c daxpy.c dcopy.c ddot.c dgbmv.c dgemm.c dgemv.c dger.c dnrm2.c drot.c drotg.c drotm.c drotmg.c dsbmv.c dscal.c dsdot.c dspmv.c dspr.c dspr2.c dswap.c dsymm.c dsymv.c dsyr.c dsyr2.c dsyr2k.c dsyrk.c dtbmv.c dtbsv.c dtpmv.c dtpsv.c dtrmm.c dtrmv.c dtrsm.c dtrsv.c dzasum.c dznrm2.c caxpy.c ccopy.c cdotc_sub.c cdotu_sub.c cgbmv.c cgemm.c cgemv.c cgerc.c cgeru.c chbmv.c chemm.c chemv.c cher.c cher2.c cher2k.c cherk.c chpmv.c chpr.c chpr2.c cscal.c csscal.c cswap.c csymm.c csyr2k.c csyrk.c ctbmv.c ctbsv.c ctpmv.c ctpsv.c ctrmm.c ctrmv.c ctrsm.c ctrsv.c zaxpy.c zcopy.c zdotc_sub.c zdotu_sub.c zdscal.c zgbmv.c zgemm.c zgemv.c zgerc.c zgeru.c zhbmv.c zhemm.c zhemv.c zher.c zher2.c zher2k.c zherk.c zhpmv.c zhpr.c zhpr2.c zscal.c zswap.c zsymm.c zsyr2k.c zsyrk.c ztbmv.c ztbsv.c ztpmv.c ztpsv.c ztrmm.c ztrmv.c ztrsm.c ztrsv.c icamax.c idamax.c isamax.c izamax.c xerbla.c + +noinst_HEADERS = tests.c tests.h cblas.h source_asum_c.h source_asum_r.h source_axpy_c.h source_axpy_r.h source_copy_c.h source_copy_r.h source_dot_c.h source_dot_r.h source_gbmv_c.h source_gbmv_r.h source_gemm_c.h source_gemm_r.h source_gemv_c.h source_gemv_r.h source_ger.h source_gerc.h source_geru.h source_hbmv.h source_hemm.h source_hemv.h source_her.h source_her2.h source_her2k.h source_herk.h source_hpmv.h source_hpr.h source_hpr2.h source_iamax_c.h source_iamax_r.h source_nrm2_c.h source_nrm2_r.h source_rot.h source_rotg.h source_rotm.h source_rotmg.h source_sbmv.h source_scal_c.h source_scal_c_s.h source_scal_r.h source_spmv.h source_spr.h source_spr2.h source_swap_c.h source_swap_r.h source_symm_c.h source_symm_r.h source_symv.h source_syr.h source_syr2.h source_syr2k_c.h source_syr2k_r.h source_syrk_c.h source_syrk_r.h source_tbmv_c.h source_tbmv_r.h source_tbsv_c.h source_tbsv_r.h source_tpmv_c.h source_tpmv_r.h source_tpsv_c.h source_tpsv_r.h source_trmm_c.h source_trmm_r.h source_trmv_c.h source_trmv_r.h source_trsm_c.h source_trsm_r.h source_trsv_c.h source_trsv_r.h hypot.c + +check_PROGRAMS = test +TESTS = $(check_PROGRAMS) + +test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c + + + diff --git a/gsl-1.9/cblas/Makefile.in b/gsl-1.9/cblas/Makefile.in new file mode 100644 index 0000000..949eca6 --- /dev/null +++ b/gsl-1.9/cblas/Makefile.in @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = test$(EXEEXT) +subdir = cblas +DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog TODO +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libgslcblas_la_LIBADD = +am_libgslcblas_la_OBJECTS = sasum.lo saxpy.lo scasum.lo scnrm2.lo \ + scopy.lo sdot.lo sdsdot.lo sgbmv.lo sgemm.lo sgemv.lo sger.lo \ + snrm2.lo srot.lo srotg.lo srotm.lo srotmg.lo ssbmv.lo sscal.lo \ + sspmv.lo sspr.lo sspr2.lo sswap.lo ssymm.lo ssymv.lo ssyr.lo \ + ssyr2.lo ssyr2k.lo ssyrk.lo stbmv.lo stbsv.lo stpmv.lo \ + stpsv.lo strmm.lo strmv.lo strsm.lo strsv.lo dasum.lo daxpy.lo \ + dcopy.lo ddot.lo dgbmv.lo dgemm.lo dgemv.lo dger.lo dnrm2.lo \ + drot.lo drotg.lo drotm.lo drotmg.lo dsbmv.lo dscal.lo dsdot.lo \ + dspmv.lo dspr.lo dspr2.lo dswap.lo dsymm.lo dsymv.lo dsyr.lo \ + dsyr2.lo dsyr2k.lo dsyrk.lo dtbmv.lo dtbsv.lo dtpmv.lo \ + dtpsv.lo dtrmm.lo dtrmv.lo dtrsm.lo dtrsv.lo dzasum.lo \ + dznrm2.lo caxpy.lo ccopy.lo cdotc_sub.lo cdotu_sub.lo cgbmv.lo \ + cgemm.lo cgemv.lo cgerc.lo cgeru.lo chbmv.lo chemm.lo chemv.lo \ + cher.lo cher2.lo cher2k.lo cherk.lo chpmv.lo chpr.lo chpr2.lo \ + cscal.lo csscal.lo cswap.lo csymm.lo csyr2k.lo csyrk.lo \ + ctbmv.lo ctbsv.lo ctpmv.lo ctpsv.lo ctrmm.lo ctrmv.lo ctrsm.lo \ + ctrsv.lo zaxpy.lo zcopy.lo zdotc_sub.lo zdotu_sub.lo zdscal.lo \ + zgbmv.lo zgemm.lo zgemv.lo zgerc.lo zgeru.lo zhbmv.lo zhemm.lo \ + zhemv.lo zher.lo zher2.lo zher2k.lo zherk.lo zhpmv.lo zhpr.lo \ + zhpr2.lo zscal.lo zswap.lo zsymm.lo zsyr2k.lo zsyrk.lo \ + ztbmv.lo ztbsv.lo ztpmv.lo ztpsv.lo ztrmm.lo ztrmv.lo ztrsm.lo \ + ztrsv.lo icamax.lo idamax.lo isamax.lo izamax.lo xerbla.lo +libgslcblas_la_OBJECTS = $(am_libgslcblas_la_OBJECTS) +am_test_OBJECTS = test.$(OBJEXT) test_amax.$(OBJEXT) \ + test_asum.$(OBJEXT) test_axpy.$(OBJEXT) test_copy.$(OBJEXT) \ + test_dot.$(OBJEXT) test_gbmv.$(OBJEXT) test_gemm.$(OBJEXT) \ + test_gemv.$(OBJEXT) test_ger.$(OBJEXT) test_hbmv.$(OBJEXT) \ + test_hemm.$(OBJEXT) test_hemv.$(OBJEXT) test_her.$(OBJEXT) \ + test_her2.$(OBJEXT) test_her2k.$(OBJEXT) test_herk.$(OBJEXT) \ + test_hpmv.$(OBJEXT) test_hpr.$(OBJEXT) test_hpr2.$(OBJEXT) \ + test_nrm2.$(OBJEXT) test_rot.$(OBJEXT) test_rotg.$(OBJEXT) \ + test_rotm.$(OBJEXT) test_rotmg.$(OBJEXT) test_sbmv.$(OBJEXT) \ + test_scal.$(OBJEXT) test_spmv.$(OBJEXT) test_spr.$(OBJEXT) \ + test_spr2.$(OBJEXT) test_swap.$(OBJEXT) test_symm.$(OBJEXT) \ + test_symv.$(OBJEXT) test_syr.$(OBJEXT) test_syr2.$(OBJEXT) \ + test_syr2k.$(OBJEXT) test_syrk.$(OBJEXT) test_tbmv.$(OBJEXT) \ + test_tbsv.$(OBJEXT) test_tpmv.$(OBJEXT) test_tpsv.$(OBJEXT) \ + test_trmm.$(OBJEXT) test_trmv.$(OBJEXT) test_trsm.$(OBJEXT) \ + test_trsv.$(OBJEXT) +test_OBJECTS = $(am_test_OBJECTS) +test_DEPENDENCIES = libgslcblas.la ../ieee-utils/libgslieeeutils.la \ + ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +DIST_SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) +pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GSL_CFLAGS = @GSL_CFLAGS@ +GSL_LIBS = @GSL_LIBS@ +GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ +GSL_LT_VERSION = @GSL_LT_VERSION@ +HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ +HAVE_DARWIN86_IEEE_INTERFACE = @HAVE_DARWIN86_IEEE_INTERFACE@ +HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ +HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ +HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ +HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ +HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ +HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ +HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ +HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ +HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ +HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ +HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ +HAVE_INLINE = @HAVE_INLINE@ +HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ +HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ +HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ +HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ +HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ +HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ +HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ +HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RELEASED = @RELEASED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +lib_LTLIBRARIES = libgslcblas.la +libgslcblas_la_LDFLAGS = -version-info $(GSL_LT_CBLAS_VERSION) +pkginclude_HEADERS = gsl_cblas.h +INCLUDES = -I$(top_srcdir) +libgslcblas_la_SOURCES = sasum.c saxpy.c scasum.c scnrm2.c scopy.c \ + sdot.c sdsdot.c sgbmv.c sgemm.c sgemv.c sger.c snrm2.c srot.c \ + srotg.c srotm.c srotmg.c ssbmv.c sscal.c sspmv.c sspr.c \ + sspr2.c sswap.c ssymm.c ssymv.c ssyr.c ssyr2.c ssyr2k.c \ + ssyrk.c stbmv.c stbsv.c stpmv.c stpsv.c strmm.c strmv.c \ + strsm.c strsv.c dasum.c daxpy.c dcopy.c ddot.c dgbmv.c dgemm.c \ + dgemv.c dger.c dnrm2.c drot.c drotg.c drotm.c drotmg.c dsbmv.c \ + dscal.c dsdot.c dspmv.c dspr.c dspr2.c dswap.c dsymm.c dsymv.c \ + dsyr.c dsyr2.c dsyr2k.c dsyrk.c dtbmv.c dtbsv.c dtpmv.c \ + dtpsv.c dtrmm.c dtrmv.c dtrsm.c dtrsv.c dzasum.c dznrm2.c \ + caxpy.c ccopy.c cdotc_sub.c cdotu_sub.c cgbmv.c cgemm.c \ + cgemv.c cgerc.c cgeru.c chbmv.c chemm.c chemv.c cher.c cher2.c \ + cher2k.c cherk.c chpmv.c chpr.c chpr2.c cscal.c csscal.c \ + cswap.c csymm.c csyr2k.c csyrk.c ctbmv.c ctbsv.c ctpmv.c \ + ctpsv.c ctrmm.c ctrmv.c ctrsm.c ctrsv.c zaxpy.c zcopy.c \ + zdotc_sub.c zdotu_sub.c zdscal.c zgbmv.c zgemm.c zgemv.c \ + zgerc.c zgeru.c zhbmv.c zhemm.c zhemv.c zher.c zher2.c \ + zher2k.c zherk.c zhpmv.c zhpr.c zhpr2.c zscal.c zswap.c \ + zsymm.c zsyr2k.c zsyrk.c ztbmv.c ztbsv.c ztpmv.c ztpsv.c \ + ztrmm.c ztrmv.c ztrsm.c ztrsv.c icamax.c idamax.c isamax.c \ + izamax.c xerbla.c +noinst_HEADERS = tests.c tests.h cblas.h source_asum_c.h \ + source_asum_r.h source_axpy_c.h source_axpy_r.h \ + source_copy_c.h source_copy_r.h source_dot_c.h source_dot_r.h \ + source_gbmv_c.h source_gbmv_r.h source_gemm_c.h \ + source_gemm_r.h source_gemv_c.h source_gemv_r.h source_ger.h \ + source_gerc.h source_geru.h source_hbmv.h source_hemm.h \ + source_hemv.h source_her.h source_her2.h source_her2k.h \ + source_herk.h source_hpmv.h source_hpr.h source_hpr2.h \ + source_iamax_c.h source_iamax_r.h source_nrm2_c.h \ + source_nrm2_r.h source_rot.h source_rotg.h source_rotm.h \ + source_rotmg.h source_sbmv.h source_scal_c.h source_scal_c_s.h \ + source_scal_r.h source_spmv.h source_spr.h source_spr2.h \ + source_swap_c.h source_swap_r.h source_symm_c.h \ + source_symm_r.h source_symv.h source_syr.h source_syr2.h \ + source_syr2k_c.h source_syr2k_r.h source_syrk_c.h \ + source_syrk_r.h source_tbmv_c.h source_tbmv_r.h \ + source_tbsv_c.h source_tbsv_r.h source_tpmv_c.h \ + source_tpmv_r.h source_tpsv_c.h source_tpsv_r.h \ + source_trmm_c.h source_trmm_r.h source_trmv_c.h \ + source_trmv_r.h source_trsm_c.h source_trsm_r.h \ + source_trsv_c.h source_trsv_r.h hypot.c +TESTS = $(check_PROGRAMS) +test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la +test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps cblas/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu --ignore-deps cblas/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libgslcblas.la: $(libgslcblas_la_OBJECTS) $(libgslcblas_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libgslcblas_la_LDFLAGS) $(libgslcblas_la_OBJECTS) $(libgslcblas_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)" + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-pkgincludeHEADERS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gsl-1.9/cblas/TODO b/gsl-1.9/cblas/TODO new file mode 100644 index 0000000..deb2a5f --- /dev/null +++ b/gsl-1.9/cblas/TODO @@ -0,0 +1,8 @@ +use macros so that all complex arithmetic can use native complex types if compiler supports them + +make sure double/float are replaced by BASE everywhere +well... not _everywhere_; internal accumulations should +be done in double always; there's no reason not too, +it's safer and maybe even faster [GJ] + +gbmv_c : use conj*imag instead of having branches form Trans & ConjTrans diff --git a/gsl-1.9/cblas/caxpy.c b/gsl-1.9/cblas/caxpy.c new file mode 100644 index 0000000..842153e --- /dev/null +++ b/gsl-1.9/cblas/caxpy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_caxpy (const int N, const void *alpha, const void *X, const int incX, + void *Y, const int incY) +{ +#define BASE float +#include "source_axpy_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cblas.h b/gsl-1.9/cblas/cblas.h new file mode 100644 index 0000000..b478671 --- /dev/null +++ b/gsl-1.9/cblas/cblas.h @@ -0,0 +1,34 @@ +#define INDEX int +#define OFFSET(N, incX) ((incX) > 0 ? 0 : ((N) - 1) * (-(incX))) +#define BLAS_ERROR(x) cblas_xerbla(0, __FILE__, x); + +#define CONJUGATE(x) ((x) == CblasConjTrans) +#define TRANSPOSE(x) ((x) == CblasTrans || (x) == CblasConjTrans) +#define UPPER(x) ((x) == CblasUpper) +#define LOWER(x) ((x) == CblasLower) + +/* Handling of packed complex types... */ + +#define REAL(a,i) (((BASE *) a)[2*(i)]) +#define IMAG(a,i) (((BASE *) a)[2*(i)+1]) + +#define REAL0(a) (((BASE *)a)[0]) +#define IMAG0(a) (((BASE *)a)[1]) + +#define CONST_REAL(a,i) (((const BASE *) a)[2*(i)]) +#define CONST_IMAG(a,i) (((const BASE *) a)[2*(i)+1]) + +#define CONST_REAL0(a) (((const BASE *)a)[0]) +#define CONST_IMAG0(a) (((const BASE *)a)[1]) + + +#define GB(KU,KL,lda,i,j) ((KU+1+(i-j))*lda + j) + +#define TRCOUNT(N,i) ((((i)+1)*(2*(N)-(i)))/2) + +/* #define TBUP(N,i,j) */ +/* #define TBLO(N,i,j) */ + +#define TPUP(N,i,j) (TRCOUNT(N,(i)-1)+(j)-(i)) +#define TPLO(N,i,j) (((i)*((i)+1))/2 + (j)) + diff --git a/gsl-1.9/cblas/ccopy.c b/gsl-1.9/cblas/ccopy.c new file mode 100644 index 0000000..c4716dd --- /dev/null +++ b/gsl-1.9/cblas/ccopy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ccopy (const int N, const void *X, const int incX, void *Y, + const int incY) +{ +#define BASE float +#include "source_copy_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cdotc_sub.c b/gsl-1.9/cblas/cdotc_sub.c new file mode 100644 index 0000000..7bf646d --- /dev/null +++ b/gsl-1.9/cblas/cdotc_sub.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cdotc_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE float +#define CONJ_SIGN (-1.0) +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-1.9/cblas/cdotu_sub.c b/gsl-1.9/cblas/cdotu_sub.c new file mode 100644 index 0000000..4dff0be --- /dev/null +++ b/gsl-1.9/cblas/cdotu_sub.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cdotu_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE float +#define CONJ_SIGN 1.0 +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-1.9/cblas/cgbmv.c b/gsl-1.9/cblas/cgbmv.c new file mode 100644 index 0000000..b263720 --- /dev/null +++ b/gsl-1.9/cblas/cgbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const void *alpha, const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE float +#include "source_gbmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cgemm.c b/gsl-1.9/cblas/cgemm.c new file mode 100644 index 0000000..006678c --- /dev/null +++ b/gsl-1.9/cblas/cgemm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, void *C, + const int ldc) +{ +#define BASE float +#include "source_gemm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cgemv.c b/gsl-1.9/cblas/cgemv.c new file mode 100644 index 0000000..4a276d8 --- /dev/null +++ b/gsl-1.9/cblas/cgemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE float +#include "source_gemv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cgerc.c b/gsl-1.9/cblas/cgerc.c new file mode 100644 index 0000000..d10d66d --- /dev/null +++ b/gsl-1.9/cblas/cgerc.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cgerc (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_gerc.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cgeru.c b/gsl-1.9/cblas/cgeru.c new file mode 100644 index 0000000..d1aa274 --- /dev/null +++ b/gsl-1.9/cblas/cgeru.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cgeru (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_geru.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chbmv.c b/gsl-1.9/cblas/chbmv.c new file mode 100644 index 0000000..04ed3d0 --- /dev/null +++ b/gsl-1.9/cblas/chbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE float +#include "source_hbmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chemm.c b/gsl-1.9/cblas/chemm.c new file mode 100644 index 0000000..c67f118 --- /dev/null +++ b/gsl-1.9/cblas/chemm.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_hemm.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chemv.c b/gsl-1.9/cblas/chemv.c new file mode 100644 index 0000000..0f54973 --- /dev/null +++ b/gsl-1.9/cblas/chemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, void *Y, + const int incY) +{ +#define BASE float +#include "source_hemv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cher.c b/gsl-1.9/cblas/cher.c new file mode 100644 index 0000000..348252e --- /dev/null +++ b/gsl-1.9/cblas/cher.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *A, const int lda) +{ +#define BASE float +#include "source_her.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cher2.c b/gsl-1.9/cblas/cher2.c new file mode 100644 index 0000000..7e5067b --- /dev/null +++ b/gsl-1.9/cblas/cher2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda) +{ +#define BASE float +#include "source_her2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cher2k.c b/gsl-1.9/cblas/cher2k.c new file mode 100644 index 0000000..d1fc694 --- /dev/null +++ b/gsl-1.9/cblas/cher2k.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const float beta, void *C, const int ldc) +{ +#define BASE float +#include "source_her2k.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cherk.c b/gsl-1.9/cblas/cherk.c new file mode 100644 index 0000000..1cb3af7 --- /dev/null +++ b/gsl-1.9/cblas/cherk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const void *A, const int lda, + const float beta, void *C, const int ldc) +{ +#define BASE float +#include "source_herk.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chpmv.c b/gsl-1.9/cblas/chpmv.c new file mode 100644 index 0000000..5069459 --- /dev/null +++ b/gsl-1.9/cblas/chpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE float +#include "source_hpmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chpr.c b/gsl-1.9/cblas/chpr.c new file mode 100644 index 0000000..1ac0d0d --- /dev/null +++ b/gsl-1.9/cblas/chpr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *Ap) +{ +#define BASE float +#include "source_hpr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/chpr2.c b/gsl-1.9/cblas/chpr2.c new file mode 100644 index 0000000..f5e4046 --- /dev/null +++ b/gsl-1.9/cblas/chpr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_chpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap) +{ +#define BASE float +#include "source_hpr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cscal.c b/gsl-1.9/cblas/cscal.c new file mode 100644 index 0000000..5a881b9 --- /dev/null +++ b/gsl-1.9/cblas/cscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cscal (const int N, const void *alpha, void *X, const int incX) +{ +#define BASE float +#include "source_scal_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/csscal.c b/gsl-1.9/cblas/csscal.c new file mode 100644 index 0000000..ef59150 --- /dev/null +++ b/gsl-1.9/cblas/csscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_csscal (const int N, const float alpha, void *X, const int incX) +{ +#define BASE float +#include "source_scal_c_s.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/cswap.c b/gsl-1.9/cblas/cswap.c new file mode 100644 index 0000000..8e940ec --- /dev/null +++ b/gsl-1.9/cblas/cswap.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_cswap (const int N, void *X, const int incX, void *Y, const int incY) +{ +#define BASE float +#include "source_swap_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/csymm.c b/gsl-1.9/cblas/csymm.c new file mode 100644 index 0000000..28bd1c9 --- /dev/null +++ b/gsl-1.9/cblas/csymm.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_csymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_symm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/csyr2k.c b/gsl-1.9/cblas/csyr2k.c new file mode 100644 index 0000000..92439a2 --- /dev/null +++ b/gsl-1.9/cblas/csyr2k.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_csyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_syr2k_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/csyrk.c b/gsl-1.9/cblas/csyrk.c new file mode 100644 index 0000000..9fec100 --- /dev/null +++ b/gsl-1.9/cblas/csyrk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_csyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc) +{ +#define BASE float +#include "source_syrk_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctbmv.c b/gsl-1.9/cblas/ctbmv.c new file mode 100644 index 0000000..f22ad92 --- /dev/null +++ b/gsl-1.9/cblas/ctbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ctbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_tbmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctbsv.c b/gsl-1.9/cblas/ctbsv.c new file mode 100644 index 0000000..b30b090 --- /dev/null +++ b/gsl-1.9/cblas/ctbsv.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ctbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_tbsv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctpmv.c b/gsl-1.9/cblas/ctpmv.c new file mode 100644 index 0000000..dd5d741 --- /dev/null +++ b/gsl-1.9/cblas/ctpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ctpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE float +#include "source_tpmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctpsv.c b/gsl-1.9/cblas/ctpsv.c new file mode 100644 index 0000000..434bd8e --- /dev/null +++ b/gsl-1.9/cblas/ctpsv.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ctpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE float +#include "source_tpsv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctrmm.c b/gsl-1.9/cblas/ctrmm.c new file mode 100644 index 0000000..37c5140 --- /dev/null +++ b/gsl-1.9/cblas/ctrmm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ctrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE float +#include "source_trmm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctrmv.c b/gsl-1.9/cblas/ctrmv.c new file mode 100644 index 0000000..260d3c2 --- /dev/null +++ b/gsl-1.9/cblas/ctrmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ctrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_trmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctrsm.c b/gsl-1.9/cblas/ctrsm.c new file mode 100644 index 0000000..7d5c427 --- /dev/null +++ b/gsl-1.9/cblas/ctrsm.c @@ -0,0 +1,17 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ctrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE float +#include "source_trsm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ctrsv.c b/gsl-1.9/cblas/ctrsv.c new file mode 100644 index 0000000..2e5c462 --- /dev/null +++ b/gsl-1.9/cblas/ctrsv.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ctrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE float +#include "source_trsv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dasum.c b/gsl-1.9/cblas/dasum.c new file mode 100644 index 0000000..db215c1 --- /dev/null +++ b/gsl-1.9/cblas/dasum.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_dasum (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_asum_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/daxpy.c b/gsl-1.9/cblas/daxpy.c new file mode 100644 index 0000000..d0fd567 --- /dev/null +++ b/gsl-1.9/cblas/daxpy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_daxpy (const int N, const double alpha, const double *X, const int incX, + double *Y, const int incY) +{ +#define BASE double +#include "source_axpy_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dcopy.c b/gsl-1.9/cblas/dcopy.c new file mode 100644 index 0000000..5c6ed2e --- /dev/null +++ b/gsl-1.9/cblas/dcopy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dcopy (const int N, const double *X, const int incX, double *Y, + const int incY) +{ +#define BASE double +#include "source_copy_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ddot.c b/gsl-1.9/cblas/ddot.c new file mode 100644 index 0000000..e5801f3 --- /dev/null +++ b/gsl-1.9/cblas/ddot.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_ddot (const int N, const double *X, const int incX, const double *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE double +#define BASE double +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-1.9/cblas/dgbmv.c b/gsl-1.9/cblas/dgbmv.c new file mode 100644 index 0000000..2da9fe4 --- /dev/null +++ b/gsl-1.9/cblas/dgbmv.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_gbmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dgemm.c b/gsl-1.9/cblas/dgemm.c new file mode 100644 index 0000000..428ed13 --- /dev/null +++ b/gsl-1.9/cblas/dgemm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_gemm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dgemv.c b/gsl-1.9/cblas/dgemv.c new file mode 100644 index 0000000..cc5aea9 --- /dev/null +++ b/gsl-1.9/cblas/dgemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY) +{ +#define BASE double +#include "source_gemv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dger.c b/gsl-1.9/cblas/dger.c new file mode 100644 index 0000000..d9596ae --- /dev/null +++ b/gsl-1.9/cblas/dger.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dger (const enum CBLAS_ORDER order, const int M, const int N, + const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda) +{ +#define BASE double +#include "source_ger.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dnrm2.c b/gsl-1.9/cblas/dnrm2.c new file mode 100644 index 0000000..f7d5d83 --- /dev/null +++ b/gsl-1.9/cblas/dnrm2.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_dnrm2 (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_nrm2_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/drot.c b/gsl-1.9/cblas/drot.c new file mode 100644 index 0000000..15c75db --- /dev/null +++ b/gsl-1.9/cblas/drot.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_drot (const int N, double *X, const int incX, double *Y, const int incY, + const double c, const double s) +{ +#define BASE double +#include "source_rot.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/drotg.c b/gsl-1.9/cblas/drotg.c new file mode 100644 index 0000000..bc95658 --- /dev/null +++ b/gsl-1.9/cblas/drotg.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_drotg (double *a, double *b, double *c, double *s) +{ +#define BASE double +#include "source_rotg.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/drotm.c b/gsl-1.9/cblas/drotm.c new file mode 100644 index 0000000..69d5129 --- /dev/null +++ b/gsl-1.9/cblas/drotm.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_drotm (const int N, double *X, const int incX, double *Y, + const int incY, const double *P) +{ +#define BASE double +#include "source_rotm.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/drotmg.c b/gsl-1.9/cblas/drotmg.c new file mode 100644 index 0000000..d9e68ba --- /dev/null +++ b/gsl-1.9/cblas/drotmg.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_drotmg (double *d1, double *d2, double *b1, const double b2, double *P) +{ +#define BASE double +#include "source_rotmg.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsbmv.c b/gsl-1.9/cblas/dsbmv.c new file mode 100644 index 0000000..2fcc6f7 --- /dev/null +++ b/gsl-1.9/cblas/dsbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY) +{ +#define BASE double +#include "source_sbmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dscal.c b/gsl-1.9/cblas/dscal.c new file mode 100644 index 0000000..479b121 --- /dev/null +++ b/gsl-1.9/cblas/dscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dscal (const int N, const double alpha, double *X, const int incX) +{ +#define BASE double +#include "source_scal_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsdot.c b/gsl-1.9/cblas/dsdot.c new file mode 100644 index 0000000..2d3400b --- /dev/null +++ b/gsl-1.9/cblas/dsdot.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_dsdot (const int N, const float *X, const int incX, const float *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE double +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-1.9/cblas/dspmv.c b/gsl-1.9/cblas/dspmv.c new file mode 100644 index 0000000..870c7e3 --- /dev/null +++ b/gsl-1.9/cblas/dspmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *Ap, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_spmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dspr.c b/gsl-1.9/cblas/dspr.c new file mode 100644 index 0000000..0d2d86e --- /dev/null +++ b/gsl-1.9/cblas/dspr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + double *Ap) +{ +#define BASE double +#include "source_spr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dspr2.c b/gsl-1.9/cblas/dspr2.c new file mode 100644 index 0000000..78348e2 --- /dev/null +++ b/gsl-1.9/cblas/dspr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *Ap) +{ +#define BASE double +#include "source_spr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dswap.c b/gsl-1.9/cblas/dswap.c new file mode 100644 index 0000000..e8401a5 --- /dev/null +++ b/gsl-1.9/cblas/dswap.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dswap (const int N, double *X, const int incX, double *Y, + const int incY) +{ +#define BASE double +#include "source_swap_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsymm.c b/gsl-1.9/cblas/dsymm.c new file mode 100644 index 0000000..0a4905a --- /dev/null +++ b/gsl-1.9/cblas/dsymm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_symm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsymv.c b/gsl-1.9/cblas/dsymv.c new file mode 100644 index 0000000..2c3429d --- /dev/null +++ b/gsl-1.9/cblas/dsymv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, double *Y, + const int incY) +{ +#define BASE double +#include "source_symv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsyr.c b/gsl-1.9/cblas/dsyr.c new file mode 100644 index 0000000..a83a795 --- /dev/null +++ b/gsl-1.9/cblas/dsyr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + double *A, const int lda) +{ +#define BASE double +#include "source_syr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsyr2.c b/gsl-1.9/cblas/dsyr2.c new file mode 100644 index 0000000..f2bfcc1 --- /dev/null +++ b/gsl-1.9/cblas/dsyr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda) +{ +#define BASE double +#include "source_syr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsyr2k.c b/gsl-1.9/cblas/dsyr2k.c new file mode 100644 index 0000000..7c14830 --- /dev/null +++ b/gsl-1.9/cblas/dsyr2k.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, double *C, + const int ldc) +{ +#define BASE double +#include "source_syr2k_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dsyrk.c b/gsl-1.9/cblas/dsyrk.c new file mode 100644 index 0000000..b529c1a --- /dev/null +++ b/gsl-1.9/cblas/dsyrk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double beta, double *C, const int ldc) +{ +#define BASE double +#include "source_syrk_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtbmv.c b/gsl-1.9/cblas/dtbmv.c new file mode 100644 index 0000000..5859218 --- /dev/null +++ b/gsl-1.9/cblas/dtbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX) +{ +#define BASE double +#include "source_tbmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtbsv.c b/gsl-1.9/cblas/dtbsv.c new file mode 100644 index 0000000..a009f1e --- /dev/null +++ b/gsl-1.9/cblas/dtbsv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX) +{ +#define BASE double +#include "source_tbsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtpmv.c b/gsl-1.9/cblas/dtpmv.c new file mode 100644 index 0000000..35fa212 --- /dev/null +++ b/gsl-1.9/cblas/dtpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX) +{ +#define BASE double +#include "source_tpmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtpsv.c b/gsl-1.9/cblas/dtpsv.c new file mode 100644 index 0000000..8b0b981 --- /dev/null +++ b/gsl-1.9/cblas/dtpsv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX) +{ +#define BASE double +#include "source_tpsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtrmm.c b/gsl-1.9/cblas/dtrmm.c new file mode 100644 index 0000000..e48c656 --- /dev/null +++ b/gsl-1.9/cblas/dtrmm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, double *B, + const int ldb) +{ +#define BASE double +#include "source_trmm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtrmv.c b/gsl-1.9/cblas/dtrmv.c new file mode 100644 index 0000000..68fc9d0 --- /dev/null +++ b/gsl-1.9/cblas/dtrmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX) +{ +#define BASE double +#include "source_trmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtrsm.c b/gsl-1.9/cblas/dtrsm.c new file mode 100644 index 0000000..d2a234b --- /dev/null +++ b/gsl-1.9/cblas/dtrsm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, double *B, + const int ldb) +{ +#define BASE double +#include "source_trsm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dtrsv.c b/gsl-1.9/cblas/dtrsv.c new file mode 100644 index 0000000..3d9f971 --- /dev/null +++ b/gsl-1.9/cblas/dtrsv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_dtrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX) +{ +#define BASE double +#include "source_trsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dzasum.c b/gsl-1.9/cblas/dzasum.c new file mode 100644 index 0000000..7484ede --- /dev/null +++ b/gsl-1.9/cblas/dzasum.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_dzasum (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_asum_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/dznrm2.c b/gsl-1.9/cblas/dznrm2.c new file mode 100644 index 0000000..d58ec9f --- /dev/null +++ b/gsl-1.9/cblas/dznrm2.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +double +cblas_dznrm2 (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_nrm2_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/gsl_cblas.h b/gsl-1.9/cblas/gsl_cblas.h new file mode 100644 index 0000000..38d0dd8 --- /dev/null +++ b/gsl-1.9/cblas/gsl_cblas.h @@ -0,0 +1,606 @@ +/* blas/gsl_cblas.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* This is a copy of the CBLAS standard header. + * We carry this around so we do not have to + * break our model for flexible BLAS functionality. + */ + +#ifndef __GSL_CBLAS_H__ +#define __GSL_CBLAS_H__ +#include <stddef.h> + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS } +#else +#define __BEGIN_DECLS /* empty */ +#define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +/* + * Enumerated and derived types + */ +#define CBLAS_INDEX size_t /* this may vary between platforms */ + +enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; +enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; +enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; +enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; +enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; + +/* + * =========================================================================== + * Prototypes for level 1 BLAS functions (complex are recast as routines) + * =========================================================================== + */ +float cblas_sdsdot(const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY); +double cblas_dsdot(const int N, const float *X, const int incX, const float *Y, + const int incY); +float cblas_sdot(const int N, const float *X, const int incX, + const float *Y, const int incY); +double cblas_ddot(const int N, const double *X, const int incX, + const double *Y, const int incY); + +/* + * Functions having prefixes Z and C only + */ +void cblas_cdotu_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotu); +void cblas_cdotc_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotc); + +void cblas_zdotu_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotu); +void cblas_zdotc_sub(const int N, const void *X, const int incX, + const void *Y, const int incY, void *dotc); + + +/* + * Functions having prefixes S D SC DZ + */ +float cblas_snrm2(const int N, const float *X, const int incX); +float cblas_sasum(const int N, const float *X, const int incX); + +double cblas_dnrm2(const int N, const double *X, const int incX); +double cblas_dasum(const int N, const double *X, const int incX); + +float cblas_scnrm2(const int N, const void *X, const int incX); +float cblas_scasum(const int N, const void *X, const int incX); + +double cblas_dznrm2(const int N, const void *X, const int incX); +double cblas_dzasum(const int N, const void *X, const int incX); + + +/* + * Functions having standard 4 prefixes (S D C Z) + */ +CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX); +CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX); +CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX); +CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX); + +/* + * =========================================================================== + * Prototypes for level 1 BLAS routines + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (s, d, c, z) + */ +void cblas_sswap(const int N, float *X, const int incX, + float *Y, const int incY); +void cblas_scopy(const int N, const float *X, const int incX, + float *Y, const int incY); +void cblas_saxpy(const int N, const float alpha, const float *X, + const int incX, float *Y, const int incY); + +void cblas_dswap(const int N, double *X, const int incX, + double *Y, const int incY); +void cblas_dcopy(const int N, const double *X, const int incX, + double *Y, const int incY); +void cblas_daxpy(const int N, const double alpha, const double *X, + const int incX, double *Y, const int incY); + +void cblas_cswap(const int N, void *X, const int incX, + void *Y, const int incY); +void cblas_ccopy(const int N, const void *X, const int incX, + void *Y, const int incY); +void cblas_caxpy(const int N, const void *alpha, const void *X, + const int incX, void *Y, const int incY); + +void cblas_zswap(const int N, void *X, const int incX, + void *Y, const int incY); +void cblas_zcopy(const int N, const void *X, const int incX, + void *Y, const int incY); +void cblas_zaxpy(const int N, const void *alpha, const void *X, + const int incX, void *Y, const int incY); + + +/* + * Routines with S and D prefix only + */ +void cblas_srotg(float *a, float *b, float *c, float *s); +void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P); +void cblas_srot(const int N, float *X, const int incX, + float *Y, const int incY, const float c, const float s); +void cblas_srotm(const int N, float *X, const int incX, + float *Y, const int incY, const float *P); + +void cblas_drotg(double *a, double *b, double *c, double *s); +void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P); +void cblas_drot(const int N, double *X, const int incX, + double *Y, const int incY, const double c, const double s); +void cblas_drotm(const int N, double *X, const int incX, + double *Y, const int incY, const double *P); + + +/* + * Routines with S D C Z CS and ZD prefixes + */ +void cblas_sscal(const int N, const float alpha, float *X, const int incX); +void cblas_dscal(const int N, const double alpha, double *X, const int incX); +void cblas_cscal(const int N, const void *alpha, void *X, const int incX); +void cblas_zscal(const int N, const void *alpha, void *X, const int incX); +void cblas_csscal(const int N, const float alpha, void *X, const int incX); +void cblas_zdscal(const int N, const double alpha, void *X, const int incX); + +/* + * =========================================================================== + * Prototypes for level 2 BLAS + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +void cblas_sgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const float alpha, const float *A, const int lda, + const float *X, const int incX, const float beta, + float *Y, const int incY); +void cblas_sgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const float alpha, + const float *A, const int lda, const float *X, + const int incX, const float beta, float *Y, const int incY); +void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, + float *X, const int incX); +void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX); +void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX); +void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX); +void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX); +void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX); + +void cblas_dgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *X, const int incX, const double beta, + double *Y, const int incY); +void cblas_dgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const double alpha, + const double *A, const int lda, const double *X, + const int incX, const double beta, double *Y, const int incY); +void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, + double *X, const int incX); +void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX); +void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX); +void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *A, const int lda, double *X, + const int incX); +void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const double *A, const int lda, + double *X, const int incX); +void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const double *Ap, double *X, const int incX); + +void cblas_cgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, + void *Y, const int incY); +void cblas_cgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const void *alpha, + const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY); +void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, + void *X, const int incX); +void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); +void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX); +void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); + +void cblas_zgemv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, + void *Y, const int incY); +void cblas_zgbmv(const enum CBLAS_ORDER order, + const enum CBLAS_TRANSPOSE TransA, const int M, const int N, + const int KL, const int KU, const void *alpha, + const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY); +void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, + void *X, const int incX); +void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); +void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX); +void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, + void *X, const int incX); +void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX); + + +/* + * Routines with S and D prefixes only + */ +void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *A, + const int lda, const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const float alpha, const float *A, + const int lda, const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *Ap, + const float *X, const int incX, + const float beta, float *Y, const int incY); +void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N, + const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *A, const int lda); +void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, float *A, const int lda); +void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, float *Ap); +void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY, float *A, + const int lda); +void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, + const int incX, const float *Y, const int incY, float *A); + +void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const double alpha, const double *A, + const int lda, const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *Ap, + const double *X, const int incX, + const double beta, double *Y, const int incY); +void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N, + const double alpha, const double *X, const int incX, + const double *Y, const int incY, double *A, const int lda); +void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, double *A, const int lda); +void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, double *Ap); +void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, const double *Y, const int incY, double *A, + const int lda); +void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const double *X, + const int incX, const double *Y, const int incY, double *A); + + +/* + * Routines with C and Z prefixes only + */ +void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, + const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, const int incX, + void *A, const int lda); +void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const void *X, + const int incX, void *A); +void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap); + +void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, + const void *X, const int incX, + const void *beta, void *Y, const int incY); +void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *A, const int lda); +void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, + const int incX, void *A); +void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda); +void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, + const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap); + +/* + * =========================================================================== + * Prototypes for level 3 BLAS + * =========================================================================== + */ + +/* + * Routines with standard 4 prefixes (S, D, C, Z) + */ +void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const float alpha, const float *A, + const int lda, const float *B, const int ldb, + const float beta, float *C, const int ldc); +void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, + float *C, const int ldc); +void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float beta, float *C, const int ldc); +void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, + float *C, const int ldc); +void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, + float *B, const int ldb); +void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, + float *B, const int ldb); + +void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const double alpha, const double *A, + const int lda, const double *B, const int ldb, + const double beta, double *C, const int ldc); +void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, + double *C, const int ldc); +void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double beta, double *C, const int ldc); +void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const double *A, const int lda, + const double *B, const int ldb, const double beta, + double *C, const int ldc); +void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, + double *B, const int ldb); +void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const double alpha, const double *A, const int lda, + double *B, const int ldb); + +void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, + const int lda, const void *B, const int ldb, + const void *beta, void *C, const int ldc); +void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc); +void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); +void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); + +void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, + const int lda, const void *B, const int ldb, + const void *beta, void *C, const int ldc); +void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc); +void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); +void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, + void *B, const int ldb); + + +/* + * Routines with prefixes C and Z only + */ +void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const void *A, const int lda, + const float beta, void *C, const int ldc); +void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const float beta, + void *C, const int ldc); + +void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, + void *C, const int ldc); +void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const void *A, const int lda, + const double beta, void *C, const int ldc); +void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const double beta, + void *C, const int ldc); + +void cblas_xerbla(int p, const char *rout, const char *form, ...); + +__END_DECLS + +#endif /* __GSL_CBLAS_H__ */ diff --git a/gsl-1.9/cblas/hypot.c b/gsl-1.9/cblas/hypot.c new file mode 100644 index 0000000..8f6bb47 --- /dev/null +++ b/gsl-1.9/cblas/hypot.c @@ -0,0 +1,28 @@ +#include <math.h> + +static double xhypot (const double x, const double y); + +static double xhypot (const double x, const double y) +{ + double xabs = fabs(x) ; + double yabs = fabs(y) ; + double min, max; + + if (xabs < yabs) { + min = xabs ; + max = yabs ; + } else { + min = yabs ; + max = xabs ; + } + + if (min == 0) + { + return max ; + } + + { + double u = min / max ; + return max * sqrt (1 + u * u) ; + } +} diff --git a/gsl-1.9/cblas/icamax.c b/gsl-1.9/cblas/icamax.c new file mode 100644 index 0000000..cf0f344 --- /dev/null +++ b/gsl-1.9/cblas/icamax.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +CBLAS_INDEX +cblas_icamax (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_iamax_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/idamax.c b/gsl-1.9/cblas/idamax.c new file mode 100644 index 0000000..b6372e7 --- /dev/null +++ b/gsl-1.9/cblas/idamax.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +CBLAS_INDEX +cblas_idamax (const int N, const double *X, const int incX) +{ +#define BASE double +#include "source_iamax_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/isamax.c b/gsl-1.9/cblas/isamax.c new file mode 100644 index 0000000..6e7279a --- /dev/null +++ b/gsl-1.9/cblas/isamax.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +CBLAS_INDEX +cblas_isamax (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_iamax_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/izamax.c b/gsl-1.9/cblas/izamax.c new file mode 100644 index 0000000..e3ae675 --- /dev/null +++ b/gsl-1.9/cblas/izamax.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +CBLAS_INDEX +cblas_izamax (const int N, const void *X, const int incX) +{ +#define BASE double +#include "source_iamax_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sasum.c b/gsl-1.9/cblas/sasum.c new file mode 100644 index 0000000..019d925 --- /dev/null +++ b/gsl-1.9/cblas/sasum.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_sasum (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_asum_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/saxpy.c b/gsl-1.9/cblas/saxpy.c new file mode 100644 index 0000000..af08d4d --- /dev/null +++ b/gsl-1.9/cblas/saxpy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_saxpy (const int N, const float alpha, const float *X, const int incX, + float *Y, const int incY) +{ +#define BASE float +#include "source_axpy_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/scasum.c b/gsl-1.9/cblas/scasum.c new file mode 100644 index 0000000..af87482 --- /dev/null +++ b/gsl-1.9/cblas/scasum.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_scasum (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_asum_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/scnrm2.c b/gsl-1.9/cblas/scnrm2.c new file mode 100644 index 0000000..4653c13 --- /dev/null +++ b/gsl-1.9/cblas/scnrm2.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_scnrm2 (const int N, const void *X, const int incX) +{ +#define BASE float +#include "source_nrm2_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/scopy.c b/gsl-1.9/cblas/scopy.c new file mode 100644 index 0000000..423a386 --- /dev/null +++ b/gsl-1.9/cblas/scopy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_scopy (const int N, const float *X, const int incX, float *Y, + const int incY) +{ +#define BASE float +#include "source_copy_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sdot.c b/gsl-1.9/cblas/sdot.c new file mode 100644 index 0000000..c65904f --- /dev/null +++ b/gsl-1.9/cblas/sdot.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_sdot (const int N, const float *X, const int incX, const float *Y, + const int incY) +{ +#define INIT_VAL 0.0 +#define ACC_TYPE float +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-1.9/cblas/sdsdot.c b/gsl-1.9/cblas/sdsdot.c new file mode 100644 index 0000000..5672ac4 --- /dev/null +++ b/gsl-1.9/cblas/sdsdot.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_sdsdot (const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY) +{ +#define INIT_VAL alpha +#define ACC_TYPE double +#define BASE float +#include "source_dot_r.h" +#undef ACC_TYPE +#undef BASE +#undef INIT_VAL +} diff --git a/gsl-1.9/cblas/sgbmv.c b/gsl-1.9/cblas/sgbmv.c new file mode 100644 index 0000000..9f2fc7d --- /dev/null +++ b/gsl-1.9/cblas/sgbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const float alpha, const float *A, const int lda, const float *X, + const int incX, const float beta, float *Y, const int incY) +{ +#define BASE float +#include "source_gbmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sgemm.c b/gsl-1.9/cblas/sgemm.c new file mode 100644 index 0000000..98ec087 --- /dev/null +++ b/gsl-1.9/cblas/sgemm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, float *C, + const int ldc) +{ +#define BASE float +#include "source_gemm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sgemv.c b/gsl-1.9/cblas/sgemv.c new file mode 100644 index 0000000..b3e7aec --- /dev/null +++ b/gsl-1.9/cblas/sgemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const float alpha, const float *A, + const int lda, const float *X, const int incX, const float beta, + float *Y, const int incY) +{ +#define BASE float +#include "source_gemv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sger.c b/gsl-1.9/cblas/sger.c new file mode 100644 index 0000000..72c366d --- /dev/null +++ b/gsl-1.9/cblas/sger.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sger (const enum CBLAS_ORDER order, const int M, const int N, + const float alpha, const float *X, const int incX, const float *Y, + const int incY, float *A, const int lda) +{ +#define BASE float +#include "source_ger.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/snrm2.c b/gsl-1.9/cblas/snrm2.c new file mode 100644 index 0000000..76b3d59 --- /dev/null +++ b/gsl-1.9/cblas/snrm2.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +float +cblas_snrm2 (const int N, const float *X, const int incX) +{ +#define BASE float +#include "source_nrm2_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/source_asum_c.h b/gsl-1.9/cblas/source_asum_c.h new file mode 100644 index 0000000..c0e85ab --- /dev/null +++ b/gsl-1.9/cblas/source_asum_c.h @@ -0,0 +1,34 @@ +/* blas/source_asum_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r = 0.0; + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + r += fabs(CONST_REAL(X, ix)) + fabs(CONST_IMAG(X, ix)); + ix += incX; + } + return r; +} diff --git a/gsl-1.9/cblas/source_asum_r.h b/gsl-1.9/cblas/source_asum_r.h new file mode 100644 index 0000000..3d6f2e3 --- /dev/null +++ b/gsl-1.9/cblas/source_asum_r.h @@ -0,0 +1,34 @@ +/* blas/source_asum_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r = 0.0; + INDEX i; + INDEX ix = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + r += fabs(X[ix]); + ix += incX; + } + return r; +} diff --git a/gsl-1.9/cblas/source_axpy_c.h b/gsl-1.9/cblas/source_axpy_c.h new file mode 100644 index 0000000..1884ccd --- /dev/null +++ b/gsl-1.9/cblas/source_axpy_c.h @@ -0,0 +1,40 @@ +/* blas/source_axpy_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (fabs(alpha_real) == 0 && fabs(alpha_imag) == 0) { + return; + } + + for (i = 0; i < N; i++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + REAL(Y, iy) += (alpha_real * x_real - alpha_imag * x_imag); + IMAG(Y, iy) += (alpha_real * x_imag + alpha_imag * x_real); + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_axpy_r.h b/gsl-1.9/cblas/source_axpy_r.h new file mode 100644 index 0000000..8e38448 --- /dev/null +++ b/gsl-1.9/cblas/source_axpy_r.h @@ -0,0 +1,50 @@ +/* blas/source_axpy_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + + if (alpha == 0.0) { + return; + } + + if (incX == 1 && incY == 1) { + const INDEX m = N % 4; + + for (i = 0; i < m; i++) { + Y[i] += alpha * X[i]; + } + + for (i = m; i + 3 < N; i += 4) { + Y[i] += alpha * X[i]; + Y[i + 1] += alpha * X[i + 1]; + Y[i + 2] += alpha * X[i + 2]; + Y[i + 3] += alpha * X[i + 3]; + } + } else { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + Y[iy] += alpha * X[ix]; + ix += incX; + iy += incY; + } + } +} diff --git a/gsl-1.9/cblas/source_copy_c.h b/gsl-1.9/cblas/source_copy_c.h new file mode 100644 index 0000000..c7f7b58 --- /dev/null +++ b/gsl-1.9/cblas/source_copy_c.h @@ -0,0 +1,31 @@ +/* blas/source_copy_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + REAL(Y, iy) = CONST_REAL(X, ix); + IMAG(Y, iy) = CONST_IMAG(X, ix); + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_copy_r.h b/gsl-1.9/cblas/source_copy_r.h new file mode 100644 index 0000000..a8dc86b --- /dev/null +++ b/gsl-1.9/cblas/source_copy_r.h @@ -0,0 +1,30 @@ +/* blas/source_copy_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + Y[iy] = X[ix]; + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_dot_c.h b/gsl-1.9/cblas/source_dot_c.h new file mode 100644 index 0000000..062040f --- /dev/null +++ b/gsl-1.9/cblas/source_dot_c.h @@ -0,0 +1,38 @@ +/* blas/source_dot_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE r_real = 0.0; + BASE r_imag = 0.0; + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE y_real = CONST_REAL(Y, iy); + const BASE y_imag = CONST_IMAG(Y, iy); + r_real += x_real * y_real - CONJ_SIGN * x_imag * y_imag; + r_imag += x_real * y_imag + CONJ_SIGN * x_imag * y_real; + ix += incX; + iy += incY; + } + REAL0(result) = r_real; + IMAG0(result) = r_imag; +} diff --git a/gsl-1.9/cblas/source_dot_r.h b/gsl-1.9/cblas/source_dot_r.h new file mode 100644 index 0000000..dc356eb --- /dev/null +++ b/gsl-1.9/cblas/source_dot_r.h @@ -0,0 +1,33 @@ +/* blas/source_dot_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + ACC_TYPE r = INIT_VAL; + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + r += X[ix] * Y[iy]; + ix += incX; + iy += incY; + } + + return r; +} diff --git a/gsl-1.9/cblas/source_gbmv_c.h b/gsl-1.9/cblas/source_gbmv_c.h new file mode 100644 index 0000000..c235366 --- /dev/null +++ b/gsl-1.9/cblas/source_gbmv_c.h @@ -0,0 +1,170 @@ +/* blas/source_gbmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY, L, U; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if (M == 0 || N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (TransA == CblasNoTrans) { + lenX = N; + lenY = M; + L = KL; + U = KU; + } else { + lenX = M; + lenY = N; + L = KU; + U = KL; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && TransA == CblasNoTrans) + || (order == CblasColMajor && TransA == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX ix = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); + const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); + + dotR += A_real * x_real - A_imag * x_imag; + dotI += A_real * x_imag + A_imag * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else if ((order == CblasRowMajor && TransA == CblasTrans) + || (order == CblasColMajor && TransA == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + if (!(tmpR == 0.0 && tmpI == 0.0)) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); + const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); + REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; + IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; + iy += incY; + } + } + ix += incX; + } + } else if (order == CblasRowMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + if (!(tmpR == 0.0 && tmpI == 0.0)) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); + const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); + REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; + IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; + iy += incY; + } + } + ix += incX; + } + } else if (order == CblasColMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX ix = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); + const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); + + dotR += A_real * x_real - (-A_imag) * x_imag; + dotI += A_real * x_imag + (-A_imag) * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_gbmv_r.h b/gsl-1.9/cblas/source_gbmv_r.h new file mode 100644 index 0000000..779512b --- /dev/null +++ b/gsl-1.9/cblas/source_gbmv_r.h @@ -0,0 +1,98 @@ +/* blas/source_gbmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY, L, U; + + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (M == 0 || N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Trans == CblasNoTrans) { + lenX = N; + lenY = M; + L = KL; + U = KU; + } else { + lenX = M; + lenY = N; + L = KU; + U = KL; + } + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] = 0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans) + || (order == CblasColMajor && Trans == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE temp = 0.0; + const INDEX j_min = (i > L ? i - L : 0); + const INDEX j_max = GSL_MIN(lenX, i + U + 1); + INDEX jx = OFFSET(lenX, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[(L - i + j) + i * lda]; + jx += incX; + } + Y[iy] += alpha * temp; + iy += incY; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans) + || (order == CblasColMajor && Trans == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX jx = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE temp = alpha * X[jx]; + if (temp != 0.0) { + const INDEX i_min = (j > U ? j - U : 0); + const INDEX i_max = GSL_MIN(lenY, j + L + 1); + INDEX iy = OFFSET(lenY, incY) + i_min * incY; + for (i = i_min; i < i_max; i++) { + Y[iy] += temp * A[lda * j + (U + i - j)]; + iy += incY; + } + } + jx += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_gemm_c.h b/gsl-1.9/cblas/source_gemm_c.h new file mode 100644 index 0000000..ca0a4fb --- /dev/null +++ b/gsl-1.9/cblas/source_gemm_c.h @@ -0,0 +1,167 @@ +/* blas/source_gemm_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + INDEX ldf, ldg; + int conjF, conjG, TransF, TransG; + const BASE *F, *G; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + F = (const BASE *)A; + ldf = lda; + conjF = (TransA == CblasConjTrans) ? -1 : 1; + TransF = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + G = (const BASE *)B; + ldg = ldb; + conjG = (TransB == CblasConjTrans) ? -1 : 1; + TransG = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + F = (const BASE *)B; + ldf = ldb; + conjF = (TransB == CblasConjTrans) ? -1 : 1; + TransF = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; + G = (const BASE *)A; + ldg = lda; + conjG = (TransA == CblasConjTrans) ? -1 : 1; + TransG = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (TransF == CblasNoTrans && TransG == CblasNoTrans) { + + /* form C := alpha*A*B + C */ + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE Fik_real = CONST_REAL(F, ldf * i + k); + const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); + const BASE temp_real = alpha_real * Fik_real - alpha_imag * Fik_imag; + const BASE temp_imag = alpha_real * Fik_imag + alpha_imag * Fik_real; + if (!(temp_real == 0.0 && temp_imag == 0.0)) { + for (j = 0; j < n2; j++) { + const BASE Gkj_real = CONST_REAL(G, ldg * k + j); + const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); + REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; + IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; + } + } + } + } + + } else if (TransF == CblasNoTrans && TransG == CblasTrans) { + + /* form C := alpha*A*B' + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Fik_real = CONST_REAL(F, ldf * i + k); + const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); + const BASE Gjk_real = CONST_REAL(G, ldg * j + k); + const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); + temp_real += Fik_real * Gjk_real - Fik_imag * Gjk_imag; + temp_imag += Fik_real * Gjk_imag + Fik_imag * Gjk_real; + } + REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (TransF == CblasTrans && TransG == CblasNoTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE Fki_real = CONST_REAL(F, ldf * k + i); + const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); + const BASE temp_real = alpha_real * Fki_real - alpha_imag * Fki_imag; + const BASE temp_imag = alpha_real * Fki_imag + alpha_imag * Fki_real; + if (!(temp_real == 0.0 && temp_imag == 0.0)) { + for (j = 0; j < n2; j++) { + const BASE Gkj_real = CONST_REAL(G, ldg * k + j); + const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); + REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; + IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; + } + } + } + } + + } else if (TransF == CblasTrans && TransG == CblasTrans) { + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Fki_real = CONST_REAL(F, ldf * k + i); + const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); + const BASE Gjk_real = CONST_REAL(G, ldg * j + k); + const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); + + temp_real += Fki_real * Gjk_real - Fki_imag * Gjk_imag; + temp_imag += Fki_real * Gjk_imag + Fki_imag * Gjk_real; + } + REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_gemm_r.h b/gsl-1.9/cblas/source_gemm_r.h new file mode 100644 index 0000000..aa625dd --- /dev/null +++ b/gsl-1.9/cblas/source_gemm_r.h @@ -0,0 +1,125 @@ +/* blas/source_gemm_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + INDEX ldf, ldg; + int TransF, TransG; + const BASE *F, *G; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + F = A; + ldf = lda; + TransF = (TransA == CblasConjTrans) ? CblasTrans : TransA; + G = B; + ldg = ldb; + TransG = (TransB == CblasConjTrans) ? CblasTrans : TransB; + } else { + n1 = N; + n2 = M; + F = B; + ldf = ldb; + TransF = (TransB == CblasConjTrans) ? CblasTrans : TransB; + G = A; + ldg = lda; + TransG = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + /* form y := beta*y */ + if (beta == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] = 0.0; + } + } + } else if (beta != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] *= beta; + } + } + } + + if (alpha == 0.0) + return; + + if (TransF == CblasNoTrans && TransG == CblasNoTrans) { + + /* form C := alpha*A*B + C */ + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE temp = alpha * F[ldf * i + k]; + if (temp != 0.0) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] += temp * G[ldg * k + j]; + } + } + } + } + + } else if (TransF == CblasNoTrans && TransG == CblasTrans) { + + /* form C := alpha*A*B' + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += F[ldf * i + k] * G[ldg * j + k]; + } + C[ldc * i + j] += alpha * temp; + } + } + + } else if (TransF == CblasTrans && TransG == CblasNoTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < n1; i++) { + const BASE temp = alpha * F[ldf * k + i]; + if (temp != 0.0) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] += temp * G[ldg * k + j]; + } + } + } + } + + } else if (TransF == CblasTrans && TransG == CblasTrans) { + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += F[ldf * k + i] * G[ldg * j + k]; + } + C[ldc * i + j] += alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_gemv_c.h b/gsl-1.9/cblas/source_gemv_c.h new file mode 100644 index 0000000..9e998c9 --- /dev/null +++ b/gsl-1.9/cblas/source_gemv_c.h @@ -0,0 +1,158 @@ +/* blas/source_gemv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if (M == 0 || N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (TransA == CblasNoTrans) { + lenX = N; + lenY = M; + } else { + lenX = M; + lenY = N; + } + + /* form y := beta*y */ + + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && TransA == CblasNoTrans) + || (order == CblasColMajor && TransA == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = CONST_IMAG(A, lda * i + j); + + dotR += A_real * x_real - A_imag * x_imag; + dotI += A_real * x_imag + A_imag * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else if ((order == CblasRowMajor && TransA == CblasTrans) + || (order == CblasColMajor && TransA == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = CONST_IMAG(A, lda * j + i); + REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; + IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; + iy += incY; + } + ix += incX; + } + } else if (order == CblasRowMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE tmpR = alpha_real * x_real - alpha_imag * x_imag; + BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; + + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = CONST_IMAG(A, lda * j + i); + REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; + IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; + iy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor && TransA == CblasConjTrans) { + /* form y := alpha*A^H*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE dotR = 0.0; + BASE dotI = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE x_real = CONST_REAL(X, ix); + const BASE x_imag = CONST_IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = CONST_IMAG(A, lda * i + j); + + dotR += A_real * x_real - (-A_imag) * x_imag; + dotI += A_real * x_imag + (-A_imag) * x_real; + ix += incX; + } + + REAL(Y, iy) += alpha_real * dotR - alpha_imag * dotI; + IMAG(Y, iy) += alpha_real * dotI + alpha_imag * dotR; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-1.9/cblas/source_gemv_r.h b/gsl-1.9/cblas/source_gemv_r.h new file mode 100644 index 0000000..6f2bbd2 --- /dev/null +++ b/gsl-1.9/cblas/source_gemv_r.h @@ -0,0 +1,90 @@ +/* blas/source_gemv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + INDEX lenX, lenY; + + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (M == 0 || N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Trans == CblasNoTrans) { + lenX = N; + lenY = M; + } else { + lenX = M; + lenY = N; + } + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans) + || (order == CblasColMajor && Trans == CblasTrans)) { + /* form y := alpha*A*x + y */ + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + BASE temp = 0.0; + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + temp += X[ix] * A[lda * i + j]; + ix += incX; + } + Y[iy] += alpha * temp; + iy += incY; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans) + || (order == CblasColMajor && Trans == CblasNoTrans)) { + /* form y := alpha*A'*x + y */ + INDEX ix = OFFSET(lenX, incX); + for (j = 0; j < lenX; j++) { + const BASE temp = alpha * X[ix]; + if (temp != 0.0) { + INDEX iy = OFFSET(lenY, incY); + for (i = 0; i < lenY; i++) { + Y[iy] += temp * A[lda * j + i]; + iy += incY; + } + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_ger.h b/gsl-1.9/cblas/source_ger.h new file mode 100644 index 0000000..9e314f3 --- /dev/null +++ b/gsl-1.9/cblas/source_ger.h @@ -0,0 +1,48 @@ +/* blas/source_ger.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + A[lda * i + j] += Y[jy] * tmp; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE tmp = alpha * Y[jy]; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + A[i + lda * j] += X[ix] * tmp; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_gerc.h b/gsl-1.9/cblas/source_gerc.h new file mode 100644 index 0000000..3ee58bc --- /dev/null +++ b/gsl-1.9/cblas/source_gerc.h @@ -0,0 +1,63 @@ +/* blas/source_gerc.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + const BASE tmp_real = alpha_real * X_real - alpha_imag * X_imag; + const BASE tmp_imag = alpha_imag * X_real + alpha_real * X_imag; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = -CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; + IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = -CONST_IMAG(Y, jy); + const BASE tmp_real = alpha_real * Y_real - alpha_imag * Y_imag; + const BASE tmp_imag = alpha_imag * Y_real + alpha_real * Y_imag; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_geru.h b/gsl-1.9/cblas/source_geru.h new file mode 100644 index 0000000..73d4948 --- /dev/null +++ b/gsl-1.9/cblas/source_geru.h @@ -0,0 +1,62 @@ +/* blas/source_geru.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (order == CblasRowMajor) { + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + const BASE tmp_real = alpha_real * X_real - alpha_imag * X_imag; + const BASE tmp_imag = alpha_imag * X_real + alpha_real * X_imag; + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; + IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; + jy += incY; + } + ix += incX; + } + } else if (order == CblasColMajor) { + INDEX jy = OFFSET(N, incY); + for (j = 0; j < N; j++) { + const BASE Y_real = CONST_REAL(Y, jy); + const BASE Y_imag = CONST_IMAG(Y, jy); + const BASE tmp_real = alpha_real * Y_real - alpha_imag * Y_imag; + const BASE tmp_imag = alpha_imag * Y_real + alpha_real * Y_imag; + INDEX ix = OFFSET(M, incX); + for (i = 0; i < M; i++) { + const BASE X_real = CONST_REAL(X, ix); + const BASE X_imag = CONST_IMAG(X, ix); + REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; + ix += incX; + } + jy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_hbmv.h b/gsl-1.9/cblas/source_hbmv.h new file mode 100644 index 0000000..28ee607 --- /dev/null +++ b/gsl-1.9/cblas/source_hbmv.h @@ -0,0 +1,145 @@ +/* blas/source_hbmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int conj = (order == CblasColMajor) ? -1 : 1; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if (N == 0) + return; + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + 0); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, i * lda + (K - i + j)); + BASE Aij_imag = conj * CONST_IMAG(A, i * lda + (K - i + j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + + { + BASE Aii_real = CONST_REAL(A, lda * i + K); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + } + + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-1.9/cblas/source_hemm.h b/gsl-1.9/cblas/source_hemm.h new file mode 100644 index 0000000..c1ea5a5 --- /dev/null +++ b/gsl-1.9/cblas/source_hemm.h @@ -0,0 +1,204 @@ +/* blas/source_hemm.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + /* const BASE Aii_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Aii_real; + IMAG(C, i * ldc + j) += temp1_imag * Aii_real; + } + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + /* const BASE Aii_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Aii_real; + IMAG(C, i * ldc + j) += temp1_imag * Aii_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + /* const BASE Ajj_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Ajj_real; + IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; + } + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); + temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); + temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; + } + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + /* const BASE Ajj_imag = 0.0; */ + REAL(C, i * ldc + j) += temp1_real * Ajj_real; + IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_hemv.h b/gsl-1.9/cblas/source_hemv.h new file mode 100644 index 0000000..5ba35e6 --- /dev/null +++ b/gsl-1.9/cblas/source_hemv.h @@ -0,0 +1,136 @@ +/* blas/source_hemv.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + i); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + j); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + INDEX iy = OFFSET(N, incY) + (N - 1) * incY; + for (i = N; i > 0 && i--;) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(A, lda * i + i); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(A, lda * i + j); + BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix -= incX; + iy -= incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_her.h b/gsl-1.9/cblas/source_her.h new file mode 100644 index 0000000..6fa08d8 --- /dev/null +++ b/gsl-1.9/cblas/source_her.h @@ -0,0 +1,80 @@ +/* blas/source_her.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = ix; + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + i) = 0; + jx += incX; + } + + for (j = i + 1; j < N; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(A, lda * i + i) = 0; + jx += incX; + } + + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_her2.h b/gsl-1.9/cblas/source_her2.h new file mode 100644 index 0000000..78793f3 --- /dev/null +++ b/gsl-1.9/cblas/source_her2.h @@ -0,0 +1,115 @@ +/* blas/source_her2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + /* tmp1 = alpha Xi */ + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + /* tmp2 = conj(alpha) Yi */ + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = ix + incX; + INDEX jy = iy + incY; + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + REAL(A, lda * i + i) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(A, lda * i + i) = 0; + + for (j = i + 1; j < N; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(A, lda * i + j) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + for (j = 0; j < i; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(A, lda * i + j) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + + REAL(A, lda * i + i) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(A, lda * i + i) = 0; + + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_her2k.h b/gsl-1.9/cblas/source_her2k.h new file mode 100644 index 0000000..5ec7ef1 --- /dev/null +++ b/gsl-1.9/cblas/source_her2k.h @@ -0,0 +1,269 @@ +/* blas/source_her2k_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + const BASE alpha_real = CONST_REAL0(alpha); + BASE alpha_imag = CONST_IMAG0(alpha); + + if (beta == 1.0 && ((alpha_real == 0.0 && alpha_imag == 0.0) || K == 0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; + alpha_imag *= -1; /* conjugate alpha */ + } + + /* form C := beta*C */ + + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0.0; + for (j = i + 1; j < N; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j < i; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + IMAG(C, ldc * i + i) = 0.0; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + + /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ + { + BASE temp_real = 0.0; + /* BASE temp_imag = 0.0; */ + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; + } + + REAL(C, i * ldc + i) += 2 * temp_real; + IMAG(C, i * ldc + i) = 0.0; + } + + /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ + for (j = i + 1; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + /* temp2 = alpha * Ajk */ + const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; + const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + + /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ + temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) + + (Bik_real * temp2_real + Bik_imag * temp2_imag)); + temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) + + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); + } + REAL(C, i * ldc + j) += temp_real; + IMAG(C, i * ldc + j) += temp_imag; + } + } + + } else if (uplo == CblasUpper && trans == CblasConjTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + /* temp1 = alpha * conj(Aki) */ + BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); + BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; + /* temp2 = conj(alpha) * conj(Bki) */ + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); + + /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ + { + REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); + IMAG(C, i * lda + i) = 0.0; + } + + for (j = i + 1; j < N; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + + /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ + + for (j = 0; j < i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + /* temp2 = alpha * Ajk */ + const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; + const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + + /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ + temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) + + (Bik_real * temp2_real + Bik_imag * temp2_imag)); + temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) + + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); + } + REAL(C, i * ldc + j) += temp_real; + IMAG(C, i * ldc + j) += temp_imag; + } + + /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ + { + BASE temp_real = 0.0; + /* BASE temp_imag = 0.0; */ + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + /* temp1 = alpha * Aik */ + const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; + const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; + } + + REAL(C, i * ldc + i) += 2 * temp_real; + IMAG(C, i * ldc + i) = 0.0; + } + } + + } else if (uplo == CblasLower && trans == CblasConjTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + /* temp1 = alpha * conj(Aki) */ + BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); + BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; + /* temp2 = conj(alpha) * conj(Bki) */ + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); + + for (j = 0; j < i; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + + /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ + { + REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); + IMAG(C, i * lda + i) = 0.0; + } + } + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_herk.h b/gsl-1.9/cblas/source_herk.h new file mode 100644 index 0000000..cfa67e4 --- /dev/null +++ b/gsl-1.9/cblas/source_herk.h @@ -0,0 +1,161 @@ +/* blas/source_herk.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + if (beta == 1.0 && (alpha == 0.0 || K == 0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; + } + + /* form y := beta*y */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0; + for (j = i + 1; j < N; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j < i; j++) { + REAL(C, ldc * i + j) *= beta; + IMAG(C, ldc * i + j) *= beta; + } + REAL(C, ldc * i + i) *= beta; + IMAG(C, ldc * i + i) = 0; + } + } + } else { + /* set imaginary part of Aii to zero */ + for (i = 0; i < N; i++) { + IMAG(C, ldc * i + i) = 0.0; + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasUpper && trans == CblasConjTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else if (uplo == CblasLower && trans == CblasConjTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha * temp_real; + IMAG(C, i * ldc + j) += alpha * temp_imag; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_hpmv.h b/gsl-1.9/cblas/source_hpmv.h new file mode 100644 index 0000000..8878231 --- /dev/null +++ b/gsl-1.9/cblas/source_hpmv.h @@ -0,0 +1,138 @@ +/* blas/source_hpmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + REAL(Y, iy) = 0.0; + IMAG(Y, iy) = 0.0; + iy += incY; + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE y_real = REAL(Y, iy); + const BASE y_imag = IMAG(Y, iy); + const BASE tmpR = y_real * beta_real - y_imag * beta_imag; + const BASE tmpI = y_real * beta_imag + y_imag * beta_real; + REAL(Y, iy) = tmpR; + IMAG(Y, iy) = tmpI; + iy += incY; + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE x_real = CONST_REAL(X, ix); + BASE x_imag = CONST_IMAG(X, ix); + BASE temp1_real = alpha_real * x_real - alpha_imag * x_imag; + BASE temp1_imag = alpha_real * x_imag + alpha_imag * x_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + /* Aii_imag is zero */ + REAL(Y, iy) += temp1_real * Aii_real; + IMAG(Y, iy) += temp1_imag * Aii_real; + for (j = j_min; j < j_max; j++) { + BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); + IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; + x_real = CONST_REAL(X, jx); + x_imag = CONST_IMAG(X, jx); + temp2_real += x_real * Aij_real - x_imag * Aij_imag; + temp2_imag += x_real * Aij_imag + x_imag * Aij_real; + jx += incX; + jy += incY; + } + REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(Y, iy) += alpha_real * temp2_imag + alpha_imag * temp2_real; + ix += incX; + iy += incY; + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_hpr.h b/gsl-1.9/cblas/source_hpr.h new file mode 100644 index 0000000..5eb93aa --- /dev/null +++ b/gsl-1.9/cblas/source_hpr.h @@ -0,0 +1,80 @@ +/* blas/source_hpr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = ix; + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPUP(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPUP(N, i, i)) = 0; + jx += incX; + } + + for (j = i + 1; j < N; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPUP(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPUP(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp_real = alpha * CONST_REAL(X, ix); + const BASE tmp_imag = alpha * conj * CONST_IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPLO(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPLO(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; + jx += incX; + } + + { + const BASE X_real = CONST_REAL(X, jx); + const BASE X_imag = -conj * CONST_IMAG(X, jx); + REAL(Ap, TPLO(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; + IMAG(Ap, TPLO(N, i, i)) = 0; + jx += incX; + } + + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_hpr2.h b/gsl-1.9/cblas/source_hpr2.h new file mode 100644 index 0000000..ecc9db1 --- /dev/null +++ b/gsl-1.9/cblas/source_hpr2.h @@ -0,0 +1,115 @@ +/* blas/source_hpr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (order == CblasColMajor) ? -1 : 1; + INDEX i, j; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + /* tmp1 = alpha Xi */ + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + /* tmp2 = conj(alpha) Yi */ + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = ix + incX; + INDEX jy = iy + incY; + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + REAL(Ap, TPUP(N, i, i)) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(Ap, TPUP(N, i, i)) = 0; + + for (j = i + 1; j < N; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(Ap, TPUP(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(Ap, TPUP(N, i, j)) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE Xi_real = CONST_REAL(X, ix); + const BASE Xi_imag = CONST_IMAG(X, ix); + const BASE tmp1_real = alpha_real * Xi_real - alpha_imag * Xi_imag; + const BASE tmp1_imag = alpha_imag * Xi_real + alpha_real * Xi_imag; + + const BASE Yi_real = CONST_REAL(Y, iy); + const BASE Yi_imag = CONST_IMAG(Y, iy); + const BASE tmp2_real = alpha_real * Yi_real + alpha_imag * Yi_imag; + const BASE tmp2_imag = -alpha_imag * Yi_real + alpha_real * Yi_imag; + + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + + /* Aij = alpha*Xi*conj(Yj) + conj(alpha)*Yi*conj(Xj) */ + + for (j = 0; j < i; j++) { + const BASE Xj_real = CONST_REAL(X, jx); + const BASE Xj_imag = CONST_IMAG(X, jx); + const BASE Yj_real = CONST_REAL(Y, jy); + const BASE Yj_imag = CONST_IMAG(Y, jy); + REAL(Ap, TPLO(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) + + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); + IMAG(Ap, TPLO(N, i, j)) += + conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + + (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); + jx += incX; + jy += incY; + } + + REAL(Ap, TPLO(N, i, i)) += 2 * (tmp1_real * Yi_real + tmp1_imag * Yi_imag); + IMAG(Ap, TPLO(N, i, i)) = 0; + + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_iamax_c.h b/gsl-1.9/cblas/source_iamax_c.h new file mode 100644 index 0000000..d6840a5 --- /dev/null +++ b/gsl-1.9/cblas/source_iamax_c.h @@ -0,0 +1,41 @@ +/* blas/source_iamax_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE max = 0.0; + INDEX ix = 0; + INDEX i; + CBLAS_INDEX result = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + const BASE a = fabs(CONST_REAL(X, ix)) + fabs(CONST_IMAG(X, ix)); + + if (a > max) { + max = a; + result = i; + } + ix += incX; + } + + return result; +} diff --git a/gsl-1.9/cblas/source_iamax_r.h b/gsl-1.9/cblas/source_iamax_r.h new file mode 100644 index 0000000..a7e4133 --- /dev/null +++ b/gsl-1.9/cblas/source_iamax_r.h @@ -0,0 +1,39 @@ +/* blas/source_iamax_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE max = 0.0; + INDEX ix = 0; + INDEX i; + CBLAS_INDEX result = 0; + + if (incX <= 0) { + return 0; + } + + for (i = 0; i < N; i++) { + if (fabs(X[ix]) > max) { + max = fabs(X[ix]); + result = i; + } + ix += incX; + } + + return result; +} diff --git a/gsl-1.9/cblas/source_nrm2_c.h b/gsl-1.9/cblas/source_nrm2_c.h new file mode 100644 index 0000000..7bd37ed --- /dev/null +++ b/gsl-1.9/cblas/source_nrm2_c.h @@ -0,0 +1,60 @@ +/* blas/source_nrm2_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE scale = 0.0; + BASE ssq = 1.0; + INDEX i; + INDEX ix = 0; + + if (N == 0 || incX < 1) { + return 0; + } + + for (i = 0; i < N; i++) { + const BASE x = CONST_REAL(X, ix); + const BASE y = CONST_IMAG(X, ix); + + if (x != 0.0) { + const BASE ax = fabs(x); + + if (scale < ax) { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } else { + ssq += (ax / scale) * (ax / scale); + } + } + + if (y != 0.0) { + const BASE ay = fabs(y); + + if (scale < ay) { + ssq = 1.0 + ssq * (scale / ay) * (scale / ay); + scale = ay; + } else { + ssq += (ay / scale) * (ay / scale); + } + } + + ix += incX; + } + + return scale * sqrt(ssq); +} diff --git a/gsl-1.9/cblas/source_nrm2_r.h b/gsl-1.9/cblas/source_nrm2_r.h new file mode 100644 index 0000000..d2beb3a --- /dev/null +++ b/gsl-1.9/cblas/source_nrm2_r.h @@ -0,0 +1,50 @@ +/* blas/source_nrm2_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + BASE scale = 0.0; + BASE ssq = 1.0; + INDEX i; + INDEX ix = 0; + + if (N <= 0 || incX <= 0) { + return 0; + } else if (N == 1) { + return fabs(X[0]); + } + + for (i = 0; i < N; i++) { + const BASE x = X[ix]; + + if (x != 0.0) { + const BASE ax = fabs(x); + + if (scale < ax) { + ssq = 1.0 + ssq * (scale / ax) * (scale / ax); + scale = ax; + } else { + ssq += (ax / scale) * (ax / scale); + } + } + + ix += incX; + } + + return scale * sqrt(ssq); +} diff --git a/gsl-1.9/cblas/source_rot.h b/gsl-1.9/cblas/source_rot.h new file mode 100644 index 0000000..1015a4c --- /dev/null +++ b/gsl-1.9/cblas/source_rot.h @@ -0,0 +1,32 @@ +/* blas/source_rot.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE x = X[ix]; + const BASE y = Y[iy]; + X[ix] = c * x + s * y; + Y[iy] = -s * x + c * y; + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_rotg.h b/gsl-1.9/cblas/source_rotg.h new file mode 100644 index 0000000..24589e2 --- /dev/null +++ b/gsl-1.9/cblas/source_rotg.h @@ -0,0 +1,46 @@ +/* blas/source_rotg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const BASE roe = (fabs(*a) > fabs(*b) ? *a : *b); + const BASE scale = fabs(*a) + fabs(*b); + BASE r, z; + + if (scale != 0.0) { + const BASE aos = *a / scale; + const BASE bos = *b / scale; + r = scale * sqrt(aos * aos + bos * bos); + r = GSL_SIGN(roe) * r; + *c = *a / r; + *s = *b / r; + z = 1.0; + if (fabs(*a) > fabs(*b)) + z = *s; + if (fabs(*b) >= fabs(*a) && *c != 0.0) + z = 1.0 / (*c); + } else { + *c = 1.0; + *s = 0.0; + r = 0.0; + z = 0.0; + } + + *a = r; + *b = z; +} diff --git a/gsl-1.9/cblas/source_rotm.h b/gsl-1.9/cblas/source_rotm.h new file mode 100644 index 0000000..942616a --- /dev/null +++ b/gsl-1.9/cblas/source_rotm.h @@ -0,0 +1,58 @@ +/* blas/source_rotmg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX n; + INDEX i = OFFSET(N, incX); + INDEX j = OFFSET(N, incY); + + BASE h11, h21, h12, h22; + + if (P[0] == -1.0) { + h11 = P[1]; + h21 = P[2]; + h12 = P[3]; + h22 = P[4]; + } else if (P[0] == 0.0) { + h11 = 1.0; + h21 = P[2]; + h12 = P[3]; + h22 = 1.0; + } else if (P[0] == 1.0) { + h11 = P[1]; + h21 = -1.0; + h12 = 1.0; + h22 = P[4]; + } else if (P[0] == -2.0) { + return; + } else { + BLAS_ERROR("unrecognized value of P[0]"); + return; + } + + for (n = 0; n < N; n++) { + const BASE w = X[i]; + const BASE z = Y[j]; + X[i] = h11 * w + h12 * z; + Y[j] = h21 * w + h22 * z; + i += incX; + j += incY; + } + +} diff --git a/gsl-1.9/cblas/source_rotmg.h b/gsl-1.9/cblas/source_rotmg.h new file mode 100644 index 0000000..7a41538 --- /dev/null +++ b/gsl-1.9/cblas/source_rotmg.h @@ -0,0 +1,162 @@ +/* blas/source_rotmg.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const BASE G = 4096.0, G2 = G * G; + BASE D1 = *d1, D2 = *d2, x = *b1, y = b2; + BASE h11, h12, h21, h22, u; + + BASE c, s; + + /* case of d1 < 0, appendix A, second to last paragraph */ + + if (D1 < 0.0) { + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + if (D2 * y == 0.0) { + P[0] = -2; /* case of H = I, page 315 */ + return; + } + + c = fabs(D1 * x * x); + s = fabs(D2 * y * y); + + if (c > s) { + /* case of equation A6 */ + + P[0] = 0.0; + + h11 = 1; + h12 = (D2 * y) / (D1 * x); + h21 = -y / x; + h22 = 1; + + u = 1 - h21 * h12; + + if (u <= 0.0) { /* the case u <= 0 is rejected */ + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + D1 /= u; + D2 /= u; + x *= u; + } else { + /* case of equation A7 */ + + if (D2 * y * y < 0.0) { + P[0] = -1; + P[1] = 0; + P[2] = 0; + P[3] = 0; + P[4] = 0; + *d1 = 0; + *d2 = 0; + *b1 = 0; + return; + } + + P[0] = 1; + + h11 = (D1 * x) / (D2 * y); + h12 = 1; + h21 = -1; + h22 = x / y; + + u = 1 + h11 * h22; + + D1 /= u; + D2 /= u; + + { + BASE tmp = D2; + D2 = D1; + D1 = tmp; + } + + x = y * u; + } + + /* rescale D1 to range [1/G2,G2] */ + + while (D1 <= 1.0 / G2 && D1 != 0.0) { + P[0] = -1; + D1 *= G2; + x /= G; + h11 /= G; + h12 /= G; + } + + while (D1 >= G2) { + P[0] = -1; + D1 /= G2; + x *= G; + h11 *= G; + h12 *= G; + } + + /* rescale D2 to range [1/G2,G2] */ + + while (fabs(D2) <= 1.0 / G2 && D2 != 0.0) { + P[0] = -1; + D2 *= G2; + h21 /= G; + h22 /= G; + } + + while (fabs(D2) >= G2) { + P[0] = -1; + D2 /= G2; + h21 *= G; + h22 *= G; + } + + *d1 = D1; + *d2 = D2; + *b1 = x; + + if (P[0] == -1.0) { + P[1] = h11; + P[2] = h21; + P[3] = h12; + P[4] = h22; + } else if (P[0] == 0.0) { + P[2] = h21; + P[3] = h12; + } else if (P[0] == 1.0) { + P[1] = h11; + P[4] = h22; + } +} diff --git a/gsl-1.9/cblas/source_sbmv.h b/gsl-1.9/cblas/source_sbmv.h new file mode 100644 index 0000000..144fc1d --- /dev/null +++ b/gsl-1.9/cblas/source_sbmv.h @@ -0,0 +1,100 @@ +/* blas/source_sbmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (N == 0) + return; + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += tmp1 * A[0 + i * lda]; + for (j = j_min; j < j_max; j++) { + BASE Aij = A[(j - i) + i * lda]; + Y[jy] += tmp1 * Aij; + tmp2 += Aij * X[jx]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = (i > K) ? i - K : 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + for (j = j_min; j < j_max; j++) { + BASE Aij = A[(K - i + j) + i * lda]; + Y[jy] += tmp1 * Aij; + tmp2 += Aij * X[jx]; + jx += incX; + jy += incY; + } + Y[iy] += tmp1 * A[K + i * lda] + alpha * tmp2; + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-1.9/cblas/source_scal_c.h b/gsl-1.9/cblas/source_scal_c.h new file mode 100644 index 0000000..9a5826b --- /dev/null +++ b/gsl-1.9/cblas/source_scal_c.h @@ -0,0 +1,39 @@ +/* blas/source_scal_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix; + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (incX <= 0) { + return; + } + + ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + REAL(X, ix) = x_real * alpha_real - x_imag * alpha_imag; + IMAG(X, ix) = x_real * alpha_imag + x_imag * alpha_real; + ix += incX; + } +} diff --git a/gsl-1.9/cblas/source_scal_c_s.h b/gsl-1.9/cblas/source_scal_c_s.h new file mode 100644 index 0000000..d8a07d4 --- /dev/null +++ b/gsl-1.9/cblas/source_scal_c_s.h @@ -0,0 +1,35 @@ +/* blas/source_scal_c_s.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix; + + if (incX <= 0) { + return; + } + + ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + REAL(X, ix) *= alpha; + IMAG(X, ix) *= alpha; + ix += incX; + } +} diff --git a/gsl-1.9/cblas/source_scal_r.h b/gsl-1.9/cblas/source_scal_r.h new file mode 100644 index 0000000..60947f8 --- /dev/null +++ b/gsl-1.9/cblas/source_scal_r.h @@ -0,0 +1,34 @@ +/* blas/source_scal_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix; + + if (incX <= 0) { + return; + } + + ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + X[ix] *= alpha; + ix += incX; + } +} diff --git a/gsl-1.9/cblas/source_spmv.h b/gsl-1.9/cblas/source_spmv.h new file mode 100644 index 0000000..8ee0c73 --- /dev/null +++ b/gsl-1.9/cblas/source_spmv.h @@ -0,0 +1,101 @@ +/* blas/source_spmv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + Y[iy] += tmp1 * Ap[TPUP(N, i, i)]; + + for (j = j_min; j < j_max; j++) { + const BASE apk = Ap[TPUP(N, i, j)]; + Y[jy] += tmp1 * apk; + tmp2 += apk * X[jx]; + jy += incY; + jx += incX; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE tmp1 = alpha * X[ix]; + BASE tmp2 = 0.0; + + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + + Y[iy] += tmp1 * Ap[TPLO(N, i, i)]; + + for (j = j_min; j < j_max; j++) { + const BASE apk = Ap[TPLO(N, i, j)]; + Y[jy] += tmp1 * apk; + tmp2 += apk * X[jx]; + jy += incY; + jx += incX; + } + Y[iy] += alpha * tmp2; + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_spr.h b/gsl-1.9/cblas/source_spr.h new file mode 100644 index 0000000..025fdd8 --- /dev/null +++ b/gsl-1.9/cblas/source_spr.h @@ -0,0 +1,56 @@ +/* blas/source_spr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = ix; + for (j = i; j < N; j++) { + Ap[TPUP(N, i, j)] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j <= i; j++) { + Ap[TPLO(N, i, j)] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_spr2.h b/gsl-1.9/cblas/source_spr2.h new file mode 100644 index 0000000..2e48fba --- /dev/null +++ b/gsl-1.9/cblas/source_spr2.h @@ -0,0 +1,66 @@ +/* blas/source_spr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = ix; + INDEX jy = iy; + for (j = i; j < N; j++) { + Ap[TPUP(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + for (j = 0; j <= i; j++) { + Ap[TPLO(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_swap_c.h b/gsl-1.9/cblas/source_swap_c.h new file mode 100644 index 0000000..81660a1 --- /dev/null +++ b/gsl-1.9/cblas/source_swap_c.h @@ -0,0 +1,35 @@ +/* blas/source_swap_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + + for (i = 0; i < N; i++) { + const BASE tmp_real = REAL(X, ix); + const BASE tmp_imag = IMAG(X, ix); + REAL(X, ix) = REAL(Y, iy); + IMAG(X, ix) = IMAG(Y, iy); + REAL(Y, iy) = tmp_real; + IMAG(Y, iy) = tmp_imag; + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_swap_r.h b/gsl-1.9/cblas/source_swap_r.h new file mode 100644 index 0000000..77ffe33 --- /dev/null +++ b/gsl-1.9/cblas/source_swap_r.h @@ -0,0 +1,31 @@ +/* blas/source_swap_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i; + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp = X[ix]; + X[ix] = Y[iy]; + Y[iy] = tmp; + ix += incX; + iy += incY; + } +} diff --git a/gsl-1.9/cblas/source_symm_c.h b/gsl-1.9/cblas/source_symm_c.h new file mode 100644 index 0000000..8959dcc --- /dev/null +++ b/gsl-1.9/cblas/source_symm_c.h @@ -0,0 +1,203 @@ +/* blas/source_symm_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = CONST_IMAG(A, i * lda + i); + REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; + IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; + } + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = CONST_REAL(B, ldb * k + j); + const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); + REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; + IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; + temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = CONST_IMAG(A, i * lda + i); + REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; + IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); + REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; + IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; + } + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; + temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = CONST_REAL(B, ldb * i + j); + const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); + const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; + const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; + BASE temp2_real = 0.0; + BASE temp2_imag = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bik_real = CONST_REAL(B, ldb * i + k); + const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); + REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; + IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; + temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; + temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; + } + { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); + REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; + IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; + IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_symm_r.h b/gsl-1.9/cblas/source_symm_r.h new file mode 100644 index 0000000..39b1958 --- /dev/null +++ b/gsl-1.9/cblas/source_symm_r.h @@ -0,0 +1,131 @@ +/* blas/source_symm_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + int uplo, side; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + uplo = Uplo; + side = Side; + } else { + n1 = N; + n2 = M; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + } + + /* form y := beta*y */ + if (beta == 0.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] = 0.0; + } + } + } else if (beta != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + C[ldc * i + j] *= beta; + } + } + } + + if (alpha == 0.0) + return; + + if (side == CblasLeft && uplo == CblasUpper) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + C[i * ldc + j] += temp1 * A[i * lda + i]; + for (k = i + 1; k < n1; k++) { + const BASE Aik = A[i * lda + k]; + C[k * ldc + j] += Aik * temp1; + temp2 += Aik * B[ldb * k + j]; + } + C[i * ldc + j] += alpha * temp2; + } + } + + } else if (side == CblasLeft && uplo == CblasLower) { + + /* form C := alpha*A*B + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + for (k = 0; k < i; k++) { + const BASE Aik = A[i * lda + k]; + C[k * ldc + j] += Aik * temp1; + temp2 += Aik * B[ldb * k + j]; + } + C[i * ldc + j] += temp1 * A[i * lda + i] + alpha * temp2; + } + } + + } else if (side == CblasRight && uplo == CblasUpper) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + C[i * ldc + j] += temp1 * A[j * lda + j]; + for (k = j + 1; k < n2; k++) { + const BASE Ajk = A[j * lda + k]; + C[i * ldc + k] += temp1 * Ajk; + temp2 += B[ldb * i + k] * Ajk; + } + C[i * ldc + j] += alpha * temp2; + } + } + + } else if (side == CblasRight && uplo == CblasLower) { + + /* form C := alpha*B*A + C */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE temp1 = alpha * B[ldb * i + j]; + BASE temp2 = 0.0; + for (k = 0; k < j; k++) { + const BASE Ajk = A[j * lda + k]; + C[i * ldc + k] += temp1 * Ajk; + temp2 += B[ldb * i + k] * Ajk; + } + C[i * ldc + j] += temp1 * A[j * lda + j] + alpha * temp2; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_symv.h b/gsl-1.9/cblas/source_symv.h new file mode 100644 index 0000000..57bf302 --- /dev/null +++ b/gsl-1.9/cblas/source_symv.h @@ -0,0 +1,93 @@ +/* blas/source_symv.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (alpha == 0.0 && beta == 1.0) + return; + + /* form y := beta*y */ + if (beta == 0.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] = 0.0; + iy += incY; + } + } else if (beta != 1.0) { + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + Y[iy] *= beta; + iy += incY; + } + } + + if (alpha == 0.0) + return; + + /* form y := alpha*A*x + y */ + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + BASE temp1 = alpha * X[ix]; + BASE temp2 = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += temp1 * A[lda * i + i]; + for (j = j_min; j < j_max; j++) { + Y[jy] += temp1 * A[lda * i + j]; + temp2 += X[jx] * A[lda * i + j]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * temp2; + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + INDEX iy = OFFSET(N, incY) + (N - 1) * incY; + for (i = N; i > 0 && i--;) { + BASE temp1 = alpha * X[ix]; + BASE temp2 = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + INDEX jy = OFFSET(N, incY) + j_min * incY; + Y[iy] += temp1 * A[lda * i + i]; + for (j = j_min; j < j_max; j++) { + Y[jy] += temp1 * A[lda * i + j]; + temp2 += X[jx] * A[lda * i + j]; + jx += incX; + jy += incY; + } + Y[iy] += alpha * temp2; + ix -= incX; + iy -= incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syr.h b/gsl-1.9/cblas/source_syr.h new file mode 100644 index 0000000..9d5584b --- /dev/null +++ b/gsl-1.9/cblas/source_syr.h @@ -0,0 +1,56 @@ +/* blas/source_syr.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = ix; + for (j = i; j < N; j++) { + A[lda * i + j] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE tmp = alpha * X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j <= i; j++) { + A[lda * i + j] += X[jx] * tmp; + jx += incX; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syr2.h b/gsl-1.9/cblas/source_syr2.h new file mode 100644 index 0000000..5bf2cab --- /dev/null +++ b/gsl-1.9/cblas/source_syr2.h @@ -0,0 +1,66 @@ +/* blas/source_syr2.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + if (N == 0) + return; + + if (alpha == 0.0) + return; + + if ((order == CblasRowMajor && Uplo == CblasUpper) + || (order == CblasColMajor && Uplo == CblasLower)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = ix; + INDEX jy = iy; + for (j = i; j < N; j++) { + A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else if ((order == CblasRowMajor && Uplo == CblasLower) + || (order == CblasColMajor && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + INDEX iy = OFFSET(N, incY); + for (i = 0; i < N; i++) { + const BASE tmp1 = alpha * X[ix]; + const BASE tmp2 = alpha * Y[iy]; + INDEX jx = OFFSET(N, incX); + INDEX jy = OFFSET(N, incY); + for (j = 0; j <= i; j++) { + A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; + jx += incX; + jy += incY; + } + ix += incX; + iy += incY; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syr2k_c.h b/gsl-1.9/cblas/source_syr2k_c.h new file mode 100644 index 0000000..b49320e --- /dev/null +++ b/gsl-1.9/cblas/source_syr2k_c.h @@ -0,0 +1,190 @@ +/* blas/source_syr2k_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasTrans : CblasNoTrans; + } + + /* form C := beta*C */ + + if (beta_real == 0.0 && beta_imag == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + } + + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) + + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); + temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) + + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; + BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; + for (j = i; j < N; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Bik_real = CONST_REAL(B, i * ldb + k); + const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + const BASE Bjk_real = CONST_REAL(B, j * ldb + k); + const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); + temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) + + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); + temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) + + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE Aki_real = CONST_REAL(A, k * lda + i); + BASE Aki_imag = CONST_IMAG(A, k * lda + i); + BASE Bki_real = CONST_REAL(B, k * ldb + i); + BASE Bki_imag = CONST_IMAG(B, k * ldb + i); + BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; + BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; + BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; + BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; + for (j = 0; j <= i; j++) { + BASE Akj_real = CONST_REAL(A, k * lda + j); + BASE Akj_imag = CONST_IMAG(A, k * lda + j); + BASE Bkj_real = CONST_REAL(B, k * ldb + j); + BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); + REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) + + (temp2_real * Akj_real - temp2_imag * Akj_imag); + IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) + + (temp2_real * Akj_imag + temp2_imag * Akj_real); + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syr2k_r.h b/gsl-1.9/cblas/source_syr2k_r.h new file mode 100644 index 0000000..866acc0 --- /dev/null +++ b/gsl-1.9/cblas/source_syr2k_r.h @@ -0,0 +1,129 @@ +/* blas/source_syr2k_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = (Trans == CblasConjTrans) ? CblasTrans : Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + + if (Trans == CblasTrans || Trans == CblasConjTrans) { + trans = CblasNoTrans; + } else { + trans = CblasTrans; + } + } + + /* form C := beta*C */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] *= beta; + } + } + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += (A[i * lda + k] * B[j * ldb + k] + + B[i * ldb + k] * A[j * lda + k]); + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE temp1 = alpha * A[k * lda + i]; + BASE temp2 = alpha * B[k * ldb + i]; + for (j = i; j < N; j++) { + C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; + } + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += (A[i * lda + k] * B[j * ldb + k] + + B[i * ldb + k] * A[j * lda + k]); + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (k = 0; k < K; k++) { + for (i = 0; i < N; i++) { + BASE temp1 = alpha * A[k * lda + i]; + BASE temp2 = alpha * B[k * ldb + i]; + for (j = 0; j <= i; j++) { + C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syrk_c.h b/gsl-1.9/cblas/source_syrk_c.h new file mode 100644 index 0000000..97dcc20 --- /dev/null +++ b/gsl-1.9/cblas/source_syrk_c.h @@ -0,0 +1,164 @@ +/* blas/source_syrk_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + const BASE beta_real = CONST_REAL0(beta); + const BASE beta_imag = CONST_IMAG0(beta); + + if ((alpha_real == 0.0 && alpha_imag == 0.0) + && (beta_real == 1.0 && beta_imag == 0.0)) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + /* FIXME: original blas does not make distinction between Trans and ConjTrans?? */ + trans = (Trans == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (Trans == CblasNoTrans) ? CblasTrans : CblasNoTrans; + } + + /* form y := beta*y */ + if (beta_real == 0.0 && beta_imag == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + REAL(C, ldc * i + j) = 0.0; + IMAG(C, ldc * i + j) = 0.0; + } + } + } + } else if (!(beta_real == 1.0 && beta_imag == 0.0)) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + const BASE Cij_real = REAL(C, ldc * i + j); + const BASE Cij_imag = IMAG(C, ldc * i + j); + REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; + IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; + } + } + } + } + + if (alpha_real == 0.0 && alpha_imag == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = CONST_IMAG(A, i * lda + k); + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); + temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; + temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + for (k = 0; k < K; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = CONST_IMAG(A, k * lda + i); + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = CONST_IMAG(A, k * lda + j); + temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; + temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; + } + REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_syrk_r.h b/gsl-1.9/cblas/source_syrk_r.h new file mode 100644 index 0000000..e245ea7 --- /dev/null +++ b/gsl-1.9/cblas/source_syrk_r.h @@ -0,0 +1,125 @@ +/* blas/source_syrk_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + int uplo, trans; + + if (alpha == 0.0 && beta == 1.0) + return; + + if (Order == CblasRowMajor) { + uplo = Uplo; + trans = (Trans == CblasConjTrans) ? CblasTrans : Trans; + } else { + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + + if (Trans == CblasTrans || Trans == CblasConjTrans) { + trans = CblasNoTrans; + } else { + trans = CblasTrans; + } + } + + /* form y := beta*y */ + if (beta == 0.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] = 0.0; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] = 0.0; + } + } + } + } else if (beta != 1.0) { + if (uplo == CblasUpper) { + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + C[ldc * i + j] *= beta; + } + } + } else { + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + C[ldc * i + j] *= beta; + } + } + } + } + + if (alpha == 0.0) + return; + + if (uplo == CblasUpper && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[i * lda + k] * A[j * lda + k]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasUpper && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = i; j < N; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[k * lda + i] * A[k * lda + j]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasNoTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[i * lda + k] * A[j * lda + k]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else if (uplo == CblasLower && trans == CblasTrans) { + + for (i = 0; i < N; i++) { + for (j = 0; j <= i; j++) { + BASE temp = 0.0; + for (k = 0; k < K; k++) { + temp += A[k * lda + i] * A[k * lda + j]; + } + C[i * ldc + j] += alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tbmv_c.h b/gsl-1.9/cblas/source_tbmv_c.h new file mode 100644 index 0000000..b0a4fac --- /dev/null +++ b/gsl-1.9/cblas/source_tbmv_c.h @@ -0,0 +1,171 @@ +/* blas/source_tbmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + incX * j_min; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + (j - i)); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + 0); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + (K - i + j)); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + (K - i + j)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + K); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + (i - j)); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + (i - j)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + 0); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + (K - j + i)); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + (K - j + i)); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + K); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tbmv_r.h b/gsl-1.9/cblas/source_tbmv_r.h new file mode 100644 index 0000000..1e57ccf --- /dev/null +++ b/gsl-1.9/cblas/source_tbmv_r.h @@ -0,0 +1,106 @@ +/* blas/source_tbmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (N == 0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = (nonunit ? A[lda * i + 0] : 1.0) * X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + (j - i)]; + jx += incX; + } + + X[ix] = temp; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = (nonunit ? A[lda * i + K] : 1.0) * X[ix]; + const INDEX j_min = (i > K ? i - K : 0); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + (K - i + j)]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + (i - j)]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + 0]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + (K - j + i)]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + K]; + } else { + X[ix] += temp; + } + ix += incX; + } + } +} diff --git a/gsl-1.9/cblas/source_tbsv_c.h b/gsl-1.9/cblas/source_tbsv_c.h new file mode 100644 index 0000000..85f0652 --- /dev/null +++ b/gsl-1.9/cblas/source_tbsv_c.h @@ -0,0 +1,179 @@ +/* blas/source_tbsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + for (i = N; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + 0); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + (K + j - i)); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (K + j - i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + K); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + K); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, (i - j) + lda * j); + const BASE Aij_imag = conj * CONST_IMAG(A, (i - j) + lda * j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, 0 + lda * i); + const BASE a_imag = conj * CONST_IMAG(A, 0 + lda * i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + for (i = N; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij_real = CONST_REAL(A, (K + i - j) + lda * j); + const BASE Aij_imag = conj * CONST_IMAG(A, (K + i - j) + lda * j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, K + lda * i); + const BASE a_imag = conj * CONST_IMAG(A, K + lda * i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tbsv_r.h b/gsl-1.9/cblas/source_tbsv_r.h new file mode 100644 index 0000000..30227e7 --- /dev/null +++ b/gsl-1.9/cblas/source_tbsv_r.h @@ -0,0 +1,123 @@ +/* blas/source_tbsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + BASE tmp = X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij = A[lda * i + (j - i)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + 0]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + + for (i = 0; i < N; i++) { + BASE tmp = X[ix]; + const INDEX j_min = (i > K ? i - K : 0); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aij = A[lda * i + (K + j - i)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + K]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE tmp = X[ix]; + const INDEX j_min = (K > i ? 0 : i - K); + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aji = A[(i - j) + lda * j]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[0 + lda * i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE tmp = X[ix]; + const INDEX j_min = i + 1; + const INDEX j_max = GSL_MIN(N, i + K + 1); + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + const BASE Aji = A[(K + i - j) + lda * j]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[K + lda * i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tpmv_c.h b/gsl-1.9/cblas/source_tpmv_c.h new file mode 100644 index 0000000..30afa6a --- /dev/null +++ b/gsl-1.9/cblas/source_tpmv_c.h @@ -0,0 +1,173 @@ +/* blas/source_tpmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x:= A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + + { + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + temp_r += Aij_real * x_real - Aij_imag * x_imag; + temp_i += Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + const BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + + { + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + temp_r += Aij_real * x_real - Aij_imag * x_imag; + temp_i += Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + for (i = N; i > 0 && i--;) { + const BASE Aii_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + { + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + const BASE Aji_real = CONST_REAL(Ap, TPUP(N, j, i)); + const BASE Aji_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); + temp_r += Aji_real * x_real - Aji_imag * x_imag; + temp_i += Aji_real * x_imag + Aji_imag * x_real; + jx += incX; + } + } + + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + const BASE Aii_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE Aii_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + BASE temp_r; + BASE temp_i; + if (nonunit) { + BASE x_real = REAL(X, ix); + BASE x_imag = IMAG(X, ix); + temp_r = Aii_real * x_real - Aii_imag * x_imag; + temp_i = Aii_real * x_imag + Aii_imag * x_real; + } else { + temp_r = REAL(X, ix); + temp_i = IMAG(X, ix); + } + { + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + BASE x_real = REAL(X, jx); + BASE x_imag = IMAG(X, jx); + const BASE Aji_real = CONST_REAL(Ap, TPLO(N, j, i)); + const BASE Aji_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); + temp_r += Aji_real * x_real - Aji_imag * x_imag; + temp_i += Aji_real * x_imag + Aji_imag * x_real; + jx += incX; + } + } + REAL(X, ix) = temp_r; + IMAG(X, ix) = temp_i; + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tpmv_r.h b/gsl-1.9/cblas/source_tpmv_r.h new file mode 100644 index 0000000..100891c --- /dev/null +++ b/gsl-1.9/cblas/source_tpmv_r.h @@ -0,0 +1,97 @@ +/* blas/source_tpmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (N == 0) + return; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x:= A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE atmp = Ap[TPUP(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + atmp = Ap[TPUP(N, i, j)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE atmp = Ap[TPLO(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + atmp = Ap[TPLO(N, i, j)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE atmp = Ap[TPUP(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + atmp = Ap[TPUP(N, j, i)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE atmp = Ap[TPLO(N, i, i)]; + BASE temp = (nonunit ? X[ix] * atmp : X[ix]); + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = i + 1; j < N; j++) { + atmp = Ap[TPLO(N, j, i)]; + temp += atmp * X[jx]; + jx += incX; + } + X[ix] = temp; + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tpsv_c.h b/gsl-1.9/cblas/source_tpsv_c.h new file mode 100644 index 0000000..bbd82e4 --- /dev/null +++ b/gsl-1.9/cblas/source_tpsv_c.h @@ -0,0 +1,227 @@ +/* blas/source_tpsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, (N - 1), (N - 1))); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, (N - 1), (N - 1))); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, 0, 0)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, 0, 0)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + INDEX ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, 0, 0)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, 0, 0)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPUP(N, j, i)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, (N - 1), (N - 1))); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, (N - 1), (N - 1))); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(Ap, TPLO(N, j, i)); + const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); + const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_tpsv_r.h b/gsl-1.9/cblas/source_tpsv_r.h new file mode 100644 index 0000000..cc4c828 --- /dev/null +++ b/gsl-1.9/cblas/source_tpsv_r.h @@ -0,0 +1,131 @@ +/* blas/source_tpsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + incX * (N - 1); + if (nonunit) { + X[ix] = X[ix] / Ap[TPUP(N, (N - 1), (N - 1))]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij = Ap[TPUP(N, i, j)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPUP(N, i, i)]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / Ap[TPLO(N, 0, 0)]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij = Ap[TPLO(N, i, j)]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPLO(N, i, j)]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + INDEX ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / Ap[TPUP(N, 0, 0)]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aji = Ap[TPUP(N, j, i)]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPUP(N, i, i)]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + if (nonunit) { + X[ix] = X[ix] / Ap[TPLO(N, (N - 1), (N - 1))]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + INDEX jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aji = Ap[TPLO(N, j, i)]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / Ap[TPLO(N, i, i)]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-1.9/cblas/source_trmm_c.h b/gsl-1.9/cblas/source_trmm_c.h new file mode 100644 index 0000000..aeadfc7 --- /dev/null +++ b/gsl-1.9/cblas/source_trmm_c.h @@ -0,0 +1,330 @@ +/* blas/source_trmm_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + const int nonunit = (Diag == CblasNonUnit); + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + int side, uplo, trans; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * TriU(A)*B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * (TriU(A))' *B */ + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < i; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; + temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; + } + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * TriL(A)*B */ + + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; + temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; + } + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, i * lda + i); + const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; + temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + const BASE Bkj_real = REAL(B, k * ldb + j); + const BASE Bkj_imag = IMAG(B, k * ldb + j); + temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; + temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * TriU(A) */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < j; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; + temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; + } + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * (TriU(A))' */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; + temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha *B * TriL(A) */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real = REAL(B, i * ldb + j); + temp_imag = IMAG(B, i * ldb + j); + } + + for (k = j + 1; k < n2; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; + temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * TriL(A)' */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp_real = 0.0; + BASE temp_imag = 0.0; + + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + const BASE Bik_real = REAL(B, i * ldb + k); + const BASE Bik_imag = IMAG(B, i * ldb + k); + temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; + temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; + } + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, j * lda + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); + const BASE Bij_real = REAL(B, i * ldb + j); + const BASE Bij_imag = IMAG(B, i * ldb + j); + temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; + temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; + } else { + temp_real += REAL(B, i * ldb + j); + temp_imag += IMAG(B, i * ldb + j); + } + + REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; + IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trmm_r.h b/gsl-1.9/cblas/source_trmm_r.h new file mode 100644 index 0000000..150668a --- /dev/null +++ b/gsl-1.9/cblas/source_trmm_r.h @@ -0,0 +1,223 @@ +/* blas/source_trmm_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + const int nonunit = (Diag == CblasNonUnit); + int side, uplo, trans; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * TriU(A)*B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[i * lda + i] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = i + 1; k < n1; k++) { + temp += A[lda * i + k] * B[k * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * (TriU(A))' *B */ + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + for (k = 0; k < i; k++) { + temp += A[lda * k + i] * B[k * ldb + j]; + } + + if (nonunit) { + temp += A[i * lda + i] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * TriL(A)*B */ + + + for (i = n1; i > 0 && i--;) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + for (k = 0; k < i; k++) { + temp += A[lda * i + k] * B[k * ldb + j]; + } + + if (nonunit) { + temp += A[i * lda + i] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[i * lda + i] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = i + 1; k < n1; k++) { + temp += A[lda * k + i] * B[k * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * TriU(A) */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp = 0.0; + + for (k = 0; k < j; k++) { + temp += A[lda * k + j] * B[i * ldb + k]; + } + + if (nonunit) { + temp += A[j * lda + j] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * (TriU(A))' */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[j * lda + j] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = j + 1; k < n2; k++) { + temp += A[lda * j + k] * B[i * ldb + k]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha *B * TriL(A) */ + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + BASE temp = 0.0; + + if (nonunit) { + temp = A[j * lda + j] * B[i * ldb + j]; + } else { + temp = B[i * ldb + j]; + } + + for (k = j + 1; k < n2; k++) { + temp += A[lda * k + j] * B[i * ldb + k]; + } + + + B[ldb * i + j] = alpha * temp; + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * TriL(A)' */ + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + BASE temp = 0.0; + + for (k = 0; k < j; k++) { + temp += A[lda * j + k] * B[i * ldb + k]; + } + + if (nonunit) { + temp += A[j * lda + j] * B[i * ldb + j]; + } else { + temp += B[i * ldb + j]; + } + + B[ldb * i + j] = alpha * temp; + } + } + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trmv_c.h b/gsl-1.9/cblas/source_trmv_c.h new file mode 100644 index 0000000..dc57c73 --- /dev/null +++ b/gsl-1.9/cblas/source_trmv_c.h @@ -0,0 +1,169 @@ +/* blas/source_tbmv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + + INDEX i, j; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + /* form x := A*x */ + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + INDEX jx = OFFSET(N, incX) + incX * j_min; + for (j = j_min; j < N; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + + for (i = N; i > 0 && i--;) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * i + j); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX); + for (j = 0; j < j_max; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp_r = 0.0; + BASE temp_i = 0.0; + const INDEX j_min = i + 1; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < N; j++) { + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + const BASE A_real = CONST_REAL(A, lda * j + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); + + temp_r += A_real * x_real - A_imag * x_imag; + temp_i += A_real * x_imag + A_imag * x_real; + + jx += incX; + } + if (nonunit) { + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE A_real = CONST_REAL(A, lda * i + i); + const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); + + REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); + IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); + } else { + REAL(X, ix) += temp_r; + IMAG(X, ix) += temp_i; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trmv_r.h b/gsl-1.9/cblas/source_trmv_r.h new file mode 100644 index 0000000..9d4f3a5 --- /dev/null +++ b/gsl-1.9/cblas/source_trmv_r.h @@ -0,0 +1,107 @@ +/* blas/source_trmv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j; + const int nonunit = (Diag == CblasNonUnit); + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* form x := A*x */ + + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + j]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * i + j]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := A'*x */ + INDEX ix = OFFSET(N, incX) + (N - 1) * incX; + for (i = N; i > 0 && i--;) { + BASE temp = 0.0; + const INDEX j_min = 0; + const INDEX j_max = i; + INDEX jx = OFFSET(N, incX) + j_min * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + i]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + INDEX ix = OFFSET(N, incX); + for (i = 0; i < N; i++) { + BASE temp = 0.0; + const INDEX j_min = i + 1; + const INDEX j_max = N; + INDEX jx = OFFSET(N, incX) + (i + 1) * incX; + for (j = j_min; j < j_max; j++) { + temp += X[jx] * A[lda * j + i]; + jx += incX; + } + if (nonunit) { + X[ix] = temp + X[ix] * A[lda * i + i]; + } else { + X[ix] += temp; + } + ix += incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trsm_c.h b/gsl-1.9/cblas/source_trsm_c.h new file mode 100644 index 0000000..d618752 --- /dev/null +++ b/gsl-1.9/cblas/source_trsm_c.h @@ -0,0 +1,397 @@ +/* blas/source_trsm_c.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + const int nonunit = (Diag == CblasNonUnit); + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + int side, uplo, trans; + + const BASE alpha_real = CONST_REAL0(alpha); + const BASE alpha_imag = CONST_IMAG0(alpha); + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = TransA; + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ + trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriU(A)) *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = 0; k < i; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; + } + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * inv(TriU(A))' *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; + } + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriL(A))*B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki_real = CONST_REAL(A, k * lda + i); + const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; + } + } + } + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + const BASE Aii_real = CONST_REAL(A, lda * i + i); + const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(Aii_real, Aii_imag); + const BASE a_real = Aii_real / s; + const BASE a_imag = Aii_imag / s; + + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + } + + for (k = 0; k < i; k++) { + const BASE Aik_real = CONST_REAL(A, i * lda + k); + const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; + IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriU(A)) */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = j + 1; k < n2; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriU(A))' */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = 0; k < j; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; + } + } + } + } + + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriL(A)) */ + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + for (k = 0; k < j; k++) { + const BASE Ajk_real = CONST_REAL(A, j * lda + k); + const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); + REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriL(A))' */ + + + if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; + IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + const BASE Ajj_real = CONST_REAL(A, lda * j + j); + const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); + const BASE s = xhypot(Ajj_real, Ajj_imag); + const BASE a_real = Ajj_real / s; + const BASE a_imag = Ajj_imag / s; + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; + IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; + } + + { + const BASE Bij_real = REAL(B, ldb * i + j); + const BASE Bij_imag = IMAG(B, ldb * i + j); + + for (k = j + 1; k < n2; k++) { + const BASE Akj_real = CONST_REAL(A, k * lda + j); + const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); + REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; + IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; + } + } + } + } + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trsm_r.h b/gsl-1.9/cblas/source_trsm_r.h new file mode 100644 index 0000000..5cb8955 --- /dev/null +++ b/gsl-1.9/cblas/source_trsm_r.h @@ -0,0 +1,275 @@ +/* blas/source_trsm_r.h + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + INDEX i, j, k; + INDEX n1, n2; + const int nonunit = (Diag == CblasNonUnit); + int side, uplo, trans; + + if (Order == CblasRowMajor) { + n1 = M; + n2 = N; + side = Side; + uplo = Uplo; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } else { + n1 = N; + n2 = M; + side = (Side == CblasLeft) ? CblasRight : CblasLeft; + uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; + trans = (TransA == CblasConjTrans) ? CblasTrans : TransA; + } + + if (side == CblasLeft && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriU(A)) *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = 0; k < i; k++) { + const BASE Aki = A[k * lda + i]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aki * B[ldb * i + j]; + } + } + } + + } else if (side == CblasLeft && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * inv(TriU(A))' *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aik = A[i * lda + k]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aik * B[ldb * i + j]; + } + } + } + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * inv(TriL(A))*B */ + + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = i + 1; k < n1; k++) { + const BASE Aki = A[k * lda + i]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aki * B[ldb * i + j]; + } + } + } + + + } else if (side == CblasLeft && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * TriL(A)' *B */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = n1; i > 0 && i--;) { + if (nonunit) { + BASE Aii = A[lda * i + i]; + for (j = 0; j < n2; j++) { + B[ldb * i + j] /= Aii; + } + } + + for (k = 0; k < i; k++) { + const BASE Aik = A[i * lda + k]; + for (j = 0; j < n2; j++) { + B[ldb * k + j] -= Aik * B[ldb * i + j]; + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriU(A)) */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = j + 1; k < n2; k++) { + B[ldb * i + k] -= A[j * lda + k] * Bij; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasUpper && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriU(A))' */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = 0; k < j; k++) { + B[ldb * i + k] -= A[k * lda + j] * Bij; + } + } + } + } + + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasNoTrans) { + + /* form B := alpha * B * inv(TriL(A)) */ + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = n2; j > 0 && j--;) { + + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = 0; k < j; k++) { + B[ldb * i + k] -= A[j * lda + k] * Bij; + } + } + } + } + + } else if (side == CblasRight && uplo == CblasLower && trans == CblasTrans) { + + /* form B := alpha * B * inv(TriL(A))' */ + + + if (alpha != 1.0) { + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + B[ldb * i + j] *= alpha; + } + } + } + + for (i = 0; i < n1; i++) { + for (j = 0; j < n2; j++) { + if (nonunit) { + BASE Ajj = A[lda * j + j]; + B[ldb * i + j] /= Ajj; + } + + { + BASE Bij = B[ldb * i + j]; + for (k = j + 1; k < n2; k++) { + B[ldb * i + k] -= A[k * lda + j] * Bij; + } + } + } + } + + + + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trsv_c.h b/gsl-1.9/cblas/source_trsv_c.h new file mode 100644 index 0000000..4d1b075 --- /dev/null +++ b/gsl-1.9/cblas/source_trsv_c.h @@ -0,0 +1,228 @@ +/* blas/source_trsv_c.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int conj = (TransA == CblasConjTrans) ? -1 : 1; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + const int nonunit = (Diag == CblasNonUnit); + INDEX i, j; + INDEX ix, jx; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + + ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * (N - 1) + (N - 1)); + const BASE a_imag = conj * CONST_IMAG(A, lda * (N - 1) + (N - 1)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + j); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + /* forward substitution */ + + ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * 0 + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * 0 + 0); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(A, lda * i + j); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + /* form x := inv( A' )*x */ + + /* forward substitution */ + + ix = OFFSET(N, incX); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * 0 + 0); + const BASE a_imag = conj * CONST_IMAG(A, lda * 0 + 0); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix += incX; + + for (i = 1; i < N; i++) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij_real = CONST_REAL(A, lda * j + i); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + + ix = OFFSET(N, incX) + incX * (N - 1); + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * (N - 1) + (N - 1)); + const BASE a_imag = conj * CONST_IMAG(A, lda * (N - 1) + (N - 1)); + const BASE x_real = REAL(X, ix); + const BASE x_imag = IMAG(X, ix); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (x_real * b_real + x_imag * b_imag) / s; + IMAG(X, ix) = (x_imag * b_real - b_imag * x_real) / s; + } + + ix -= incX; + + for (i = N - 1; i > 0 && i--;) { + BASE tmp_real = REAL(X, ix); + BASE tmp_imag = IMAG(X, ix); + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij_real = CONST_REAL(A, lda * j + i); + const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); + const BASE x_real = REAL(X, jx); + const BASE x_imag = IMAG(X, jx); + tmp_real -= Aij_real * x_real - Aij_imag * x_imag; + tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; + jx += incX; + } + + if (nonunit) { + const BASE a_real = CONST_REAL(A, lda * i + i); + const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); + const BASE s = xhypot(a_real, a_imag); + const BASE b_real = a_real / s; + const BASE b_imag = a_imag / s; + REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; + IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; + } else { + REAL(X, ix) = tmp_real; + IMAG(X, ix) = tmp_imag; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } +} diff --git a/gsl-1.9/cblas/source_trsv_r.h b/gsl-1.9/cblas/source_trsv_r.h new file mode 100644 index 0000000..40246f3 --- /dev/null +++ b/gsl-1.9/cblas/source_trsv_r.h @@ -0,0 +1,132 @@ +/* blas/source_trsv_r.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +{ + const int nonunit = (Diag == CblasNonUnit); + INDEX ix, jx; + INDEX i, j; + const int Trans = (TransA != CblasConjTrans) ? TransA : CblasTrans; + + if (N == 0) + return; + + /* form x := inv( A )*x */ + + if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasLower)) { + /* backsubstitution */ + ix = OFFSET(N, incX) + incX * (N - 1); + if (nonunit) { + X[ix] = X[ix] / A[lda * (N - 1) + (N - 1)]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aij = A[lda * i + j]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { + + /* forward substitution */ + ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / A[lda * 0 + 0]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aij = A[lda * i + j]; + tmp -= Aij * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { + + /* form x := inv( A' )*x */ + + /* forward substitution */ + ix = OFFSET(N, incX); + if (nonunit) { + X[ix] = X[ix] / A[lda * 0 + 0]; + } + ix += incX; + for (i = 1; i < N; i++) { + BASE tmp = X[ix]; + jx = OFFSET(N, incX); + for (j = 0; j < i; j++) { + const BASE Aji = A[lda * j + i]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix += incX; + } + } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) + || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { + + /* backsubstitution */ + ix = OFFSET(N, incX) + (N - 1) * incX; + if (nonunit) { + X[ix] = X[ix] / A[lda * (N - 1) + (N - 1)]; + } + ix -= incX; + for (i = N - 1; i > 0 && i--;) { + BASE tmp = X[ix]; + jx = ix + incX; + for (j = i + 1; j < N; j++) { + const BASE Aji = A[lda * j + i]; + tmp -= Aji * X[jx]; + jx += incX; + } + if (nonunit) { + X[ix] = tmp / A[lda * i + i]; + } else { + X[ix] = tmp; + } + ix -= incX; + } + } else { + BLAS_ERROR("unrecognized operation"); + } + +} diff --git a/gsl-1.9/cblas/srot.c b/gsl-1.9/cblas/srot.c new file mode 100644 index 0000000..ee602d0 --- /dev/null +++ b/gsl-1.9/cblas/srot.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_srot (const int N, float *X, const int incX, float *Y, const int incY, + const float c, const float s) +{ +#define BASE float +#include "source_rot.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/srotg.c b/gsl-1.9/cblas/srotg.c new file mode 100644 index 0000000..65b2796 --- /dev/null +++ b/gsl-1.9/cblas/srotg.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_srotg (float *a, float *b, float *c, float *s) +{ +#define BASE float +#include "source_rotg.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/srotm.c b/gsl-1.9/cblas/srotm.c new file mode 100644 index 0000000..b4707e6 --- /dev/null +++ b/gsl-1.9/cblas/srotm.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_srotm (const int N, float *X, const int incX, float *Y, const int incY, + const float *P) +{ +#define BASE float +#include "source_rotm.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/srotmg.c b/gsl-1.9/cblas/srotmg.c new file mode 100644 index 0000000..3366300 --- /dev/null +++ b/gsl-1.9/cblas/srotmg.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_srotmg (float *d1, float *d2, float *b1, const float b2, float *P) +{ +#define BASE float +#include "source_rotmg.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssbmv.c b/gsl-1.9/cblas/ssbmv.c new file mode 100644 index 0000000..e01f80e --- /dev/null +++ b/gsl-1.9/cblas/ssbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const float alpha, const float *A, + const int lda, const float *X, const int incX, const float beta, + float *Y, const int incY) +{ +#define BASE float +#include "source_sbmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sscal.c b/gsl-1.9/cblas/sscal.c new file mode 100644 index 0000000..e4a8334 --- /dev/null +++ b/gsl-1.9/cblas/sscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sscal (const int N, const float alpha, float *X, const int incX) +{ +#define BASE float +#include "source_scal_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sspmv.c b/gsl-1.9/cblas/sspmv.c new file mode 100644 index 0000000..41884d8 --- /dev/null +++ b/gsl-1.9/cblas/sspmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *Ap, const float *X, + const int incX, const float beta, float *Y, const int incY) +{ +#define BASE float +#include "source_spmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sspr.c b/gsl-1.9/cblas/sspr.c new file mode 100644 index 0000000..e0b60d2 --- /dev/null +++ b/gsl-1.9/cblas/sspr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + float *Ap) +{ +#define BASE float +#include "source_spr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sspr2.c b/gsl-1.9/cblas/sspr2.c new file mode 100644 index 0000000..c269b8e --- /dev/null +++ b/gsl-1.9/cblas/sspr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *Ap) +{ +#define BASE double +#include "source_spr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/sswap.c b/gsl-1.9/cblas/sswap.c new file mode 100644 index 0000000..f9ca153 --- /dev/null +++ b/gsl-1.9/cblas/sswap.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_sswap (const int N, float *X, const int incX, float *Y, const int incY) +{ +#define BASE float +#include "source_swap_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssymm.c b/gsl-1.9/cblas/ssymm.c new file mode 100644 index 0000000..2516b93 --- /dev/null +++ b/gsl-1.9/cblas/ssymm.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const float alpha, const float *A, const int lda, const float *B, + const int ldb, const float beta, float *C, const int ldc) +{ +#define BASE float +#include "source_symm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssymv.c b/gsl-1.9/cblas/ssymv.c new file mode 100644 index 0000000..bf2708c --- /dev/null +++ b/gsl-1.9/cblas/ssymv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *A, const int lda, + const float *X, const int incX, const float beta, float *Y, + const int incY) +{ +#define BASE float +#include "source_symv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssyr.c b/gsl-1.9/cblas/ssyr.c new file mode 100644 index 0000000..4cd15ce --- /dev/null +++ b/gsl-1.9/cblas/ssyr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + float *A, const int lda) +{ +#define BASE float +#include "source_syr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssyr2.c b/gsl-1.9/cblas/ssyr2.c new file mode 100644 index 0000000..996710b --- /dev/null +++ b/gsl-1.9/cblas/ssyr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const float alpha, const float *X, const int incX, + const float *Y, const int incY, float *A, const int lda) +{ +#define BASE float +#include "source_syr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssyr2k.c b/gsl-1.9/cblas/ssyr2k.c new file mode 100644 index 0000000..2cbafb3 --- /dev/null +++ b/gsl-1.9/cblas/ssyr2k.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float *B, const int ldb, const float beta, float *C, + const int ldc) +{ +#define BASE float +#include "source_syr2k_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ssyrk.c b/gsl-1.9/cblas/ssyrk.c new file mode 100644 index 0000000..ef5686e --- /dev/null +++ b/gsl-1.9/cblas/ssyrk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ssyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const float alpha, const float *A, const int lda, + const float beta, float *C, const int ldc) +{ +#define BASE float +#include "source_syrk_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/stbmv.c b/gsl-1.9/cblas/stbmv.c new file mode 100644 index 0000000..3ff335b --- /dev/null +++ b/gsl-1.9/cblas/stbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_stbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX) +{ +#define BASE float +#include "source_tbmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/stbsv.c b/gsl-1.9/cblas/stbsv.c new file mode 100644 index 0000000..9aee84a --- /dev/null +++ b/gsl-1.9/cblas/stbsv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_stbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const float *A, const int lda, + float *X, const int incX) +{ +#define BASE float +#include "source_tbsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/stpmv.c b/gsl-1.9/cblas/stpmv.c new file mode 100644 index 0000000..d5457da --- /dev/null +++ b/gsl-1.9/cblas/stpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_stpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX) +{ +#define BASE float +#include "source_tpmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/stpsv.c b/gsl-1.9/cblas/stpsv.c new file mode 100644 index 0000000..c983de0 --- /dev/null +++ b/gsl-1.9/cblas/stpsv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_stpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *Ap, float *X, const int incX) +{ +#define BASE float +#include "source_tpsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/strmm.c b/gsl-1.9/cblas/strmm.c new file mode 100644 index 0000000..2d715fb --- /dev/null +++ b/gsl-1.9/cblas/strmm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_strmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, float *B, + const int ldb) +{ +#define BASE float +#include "source_trmm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/strmv.c b/gsl-1.9/cblas/strmv.c new file mode 100644 index 0000000..2288d96 --- /dev/null +++ b/gsl-1.9/cblas/strmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_strmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX) +{ +#define BASE float +#include "source_trmv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/strsm.c b/gsl-1.9/cblas/strsm.c new file mode 100644 index 0000000..5c620ef --- /dev/null +++ b/gsl-1.9/cblas/strsm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_strsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const float alpha, const float *A, const int lda, float *B, + const int ldb) +{ +#define BASE float +#include "source_trsm_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/strsv.c b/gsl-1.9/cblas/strsv.c new file mode 100644 index 0000000..35add0e --- /dev/null +++ b/gsl-1.9/cblas/strsv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_strsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const float *A, const int lda, float *X, + const int incX) +{ +#define BASE float +#include "source_trsv_r.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/test.c b/gsl-1.9/cblas/test.c new file mode 100644 index 0000000..cccea54 --- /dev/null +++ b/gsl-1.9/cblas/test.c @@ -0,0 +1,38 @@ +/* blas/test.c + * + * Copyright (C) 2001 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <config.h> +#include <stdlib.h> +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +int +main (void) +{ + gsl_ieee_env_setup (); + +#include "tests.c" + + exit (gsl_test_summary()); +} + diff --git a/gsl-1.9/cblas/test_amax.c b/gsl-1.9/cblas/test_amax.c new file mode 100644 index 0000000..c370224 --- /dev/null +++ b/gsl-1.9/cblas/test_amax.c @@ -0,0 +1,142 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_amax (void) { + { + int N = 1; + float X[] = { -0.388f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 52)"); + }; + + + { + int N = 1; + double X[] = { 0.247 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 53)"); + }; + + + { + int N = 1; + float X[] = { 0.704f, 0.665f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 54)"); + }; + + + { + int N = 1; + double X[] = { -0.599, -0.758 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 55)"); + }; + + + { + int N = 2; + float X[] = { 0.909f, 0.037f }; + int incX = 1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 56)"); + }; + + + { + int N = 2; + double X[] = { 0.271, -0.426 }; + int incX = 1; + int expected = 1; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 57)"); + }; + + + { + int N = 2; + float X[] = { -0.648f, 0.317f, 0.62f, 0.392f }; + int incX = 1; + int expected = 1; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 58)"); + }; + + + { + int N = 2; + double X[] = { -0.789, 0.352, 0.562, 0.697 }; + int incX = 1; + int expected = 1; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 59)"); + }; + + + { + int N = 2; + float X[] = { 0.487f, 0.918f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_isamax(N, X, incX); + gsl_test_int(k, expected, "samax(case 60)"); + }; + + + { + int N = 2; + double X[] = { 0.537, 0.826 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_idamax(N, X, incX); + gsl_test_int(k, expected, "damax(case 61)"); + }; + + + { + int N = 2; + float X[] = { 0.993f, 0.172f, -0.825f, 0.873f }; + int incX = -1; + int expected = 0; + int k; + k = cblas_icamax(N, X, incX); + gsl_test_int(k, expected, "camax(case 62)"); + }; + + + { + int N = 2; + double X[] = { 0.913, -0.436, -0.134, 0.129 }; + int incX = -1; + int expected = 0; + int k; + k = cblas_izamax(N, X, incX); + gsl_test_int(k, expected, "zamax(case 63)"); + }; + + +} diff --git a/gsl-1.9/cblas/test_asum.c b/gsl-1.9/cblas/test_asum.c new file mode 100644 index 0000000..26353de --- /dev/null +++ b/gsl-1.9/cblas/test_asum.c @@ -0,0 +1,143 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_asum (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.239f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 40)"); + }; + + + { + int N = 1; + double X[] = { -0.413 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 41)"); + }; + + + { + int N = 1; + float X[] = { 0.1f, 0.017f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 42)"); + }; + + + { + int N = 1; + double X[] = { -0.651, 0.079 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 43)"); + }; + + + { + int N = 2; + float X[] = { 0.899f, -0.72f }; + int incX = 1; + float expected = 1.619f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 44)"); + }; + + + { + int N = 2; + double X[] = { 0.271, -0.012 }; + int incX = 1; + double expected = 0.283; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 45)"); + }; + + + { + int N = 2; + float X[] = { -0.567f, -0.645f, 0.098f, 0.256f }; + int incX = 1; + float expected = 1.566f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 46)"); + }; + + + { + int N = 2; + double X[] = { -0.046, -0.671, -0.323, 0.785 }; + int incX = 1; + double expected = 1.825; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 47)"); + }; + + + { + int N = 2; + float X[] = { 0.169f, 0.833f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_sasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "sasum(case 48)"); + }; + + + { + int N = 2; + double X[] = { -0.586, -0.486 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dasum(case 49)"); + }; + + + { + int N = 2; + float X[] = { -0.314f, -0.318f, -0.835f, -0.807f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scasum(N, X, incX); + gsl_test_rel(f, expected, flteps, "scasum(case 50)"); + }; + + + { + int N = 2; + double X[] = { -0.927, 0.152, -0.554, -0.844 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dzasum(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dzasum(case 51)"); + }; + + +} diff --git a/gsl-1.9/cblas/test_axpy.c b/gsl-1.9/cblas/test_axpy.c new file mode 100644 index 0000000..9f30cd4 --- /dev/null +++ b/gsl-1.9/cblas/test_axpy.c @@ -0,0 +1,233 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_axpy (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.018f }; + int incX = 1; + float Y[] = { -0.417f }; + int incY = -1; + float expected[] = { -0.417f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 64)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0; + double X[] = { 0.071 }; + int incX = 1; + double Y[] = { -0.888 }; + int incY = -1; + double expected[] = { -0.888 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 65)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { -0.542f, -0.362f }; + int incX = 1; + float Y[] = { -0.459f, -0.433f }; + int incY = -1; + float expected[] = { -1.001f, -0.795f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 66) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 66) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {-1, 0}; + double X[] = { 0.003, -0.514 }; + int incX = 1; + double Y[] = { -0.529, 0.743 }; + int incY = -1; + double expected[] = { -0.532, 1.257 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 67) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 67) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.771f }; + int incX = -1; + float Y[] = { 0.507f }; + int incY = 1; + float expected[] = { 0.5841f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 68)"); + } + }; + }; + + + { + int N = 1; + double alpha = -0.3; + double X[] = { 0.029 }; + int incX = -1; + double Y[] = { -0.992 }; + int incY = 1; + double expected[] = { -1.0007 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 69)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {-0.3f, 0.1f}; + float X[] = { 0.194f, -0.959f }; + int incX = -1; + float Y[] = { 0.096f, 0.032f }; + int incY = 1; + float expected[] = { 0.1337f, 0.3391f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 70) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 70) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 1}; + double X[] = { 0.776, -0.671 }; + int incX = -1; + double Y[] = { 0.39, 0.404 }; + int incY = 1; + double expected[] = { 1.061, 1.18 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 71) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 71) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.647f }; + int incX = -1; + float Y[] = { 0.016f }; + int incY = -1; + float expected[] = { 0.663f }; + cblas_saxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "saxpy(case 72)"); + } + }; + }; + + + { + int N = 1; + double alpha = -1; + double X[] = { -0.558 }; + int incX = -1; + double Y[] = { 0.308 }; + int incY = -1; + double expected[] = { 0.866 }; + cblas_daxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "daxpy(case 73)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {-0.3f, 0.1f}; + float X[] = { 0.899f, -0.624f }; + int incX = -1; + float Y[] = { 0.155f, -0.33f }; + int incY = -1; + float expected[] = { -0.0523f, -0.0529f }; + cblas_caxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "caxpy(case 74) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "caxpy(case 74) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 1}; + double X[] = { -0.451, 0.768 }; + int incX = -1; + double Y[] = { 0.007, 0.732 }; + int incY = -1; + double expected[] = { -0.761, 0.281 }; + cblas_zaxpy(N, alpha, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zaxpy(case 75) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zaxpy(case 75) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_copy.c b/gsl-1.9/cblas/test_copy.c new file mode 100644 index 0000000..2a65663 --- /dev/null +++ b/gsl-1.9/cblas/test_copy.c @@ -0,0 +1,221 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_copy (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.898f }; + int incX = 1; + float Y[] = { 0.699f }; + int incY = -1; + float expected[] = { 0.898f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 76)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.002 }; + int incX = 1; + double Y[] = { -0.921 }; + int incY = -1; + double expected[] = { 0.002 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 77)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.166f, 0.639f }; + int incX = 1; + float Y[] = { 0.863f, 0.613f }; + int incY = -1; + float expected[] = { -0.166f, 0.639f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 78) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 78) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.315, -0.324 }; + int incX = 1; + double Y[] = { -0.312, -0.748 }; + int incY = -1; + double expected[] = { 0.315, -0.324 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 79) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 79) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.222f }; + int incX = -1; + float Y[] = { 0.522f }; + int incY = 1; + float expected[] = { 0.222f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 80)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.021 }; + int incX = -1; + double Y[] = { 0.898 }; + int incY = 1; + double expected[] = { 0.021 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 81)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.376f, 0.229f }; + int incX = -1; + float Y[] = { 0.143f, -0.955f }; + int incY = 1; + float expected[] = { 0.376f, 0.229f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 82) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 82) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.265, -0.84 }; + int incX = -1; + double Y[] = { -0.156, 0.939 }; + int incY = 1; + double expected[] = { -0.265, -0.84 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 83) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 83) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.074f }; + int incX = -1; + float Y[] = { -0.802f }; + int incY = -1; + float expected[] = { 0.074f }; + cblas_scopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], flteps, "scopy(case 84)"); + } + }; + }; + + + { + int N = 1; + double X[] = { -0.374 }; + int incX = -1; + double Y[] = { -0.161 }; + int incY = -1; + double expected[] = { -0.374 }; + cblas_dcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected[i], dbleps, "dcopy(case 85)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.084f, 0.778f }; + int incX = -1; + float Y[] = { 0.31f, -0.797f }; + int incY = -1; + float expected[] = { 0.084f, 0.778f }; + cblas_ccopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], flteps, "ccopy(case 86) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], flteps, "ccopy(case 86) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.831, -0.282 }; + int incX = -1; + double Y[] = { -0.62, 0.32 }; + int incY = -1; + double expected[] = { 0.831, -0.282 }; + cblas_zcopy(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected[2*i], dbleps, "zcopy(case 87) real"); + gsl_test_rel(Y[2*i+1], expected[2*i+1], dbleps, "zcopy(case 87) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_dot.c b/gsl-1.9/cblas/test_dot.c new file mode 100644 index 0000000..8000fe7 --- /dev/null +++ b/gsl-1.9/cblas/test_dot.c @@ -0,0 +1,383 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_dot (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 0.604725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 1)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 0.704725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 2)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.733f }; + float Y[] = { 0.825f }; + int incX = 1; + int incY = -1; + float expected = 1.604725f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 3)"); + }; + + + { + int N = 1; + float alpha = 0.0f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 0.541604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 4)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 0.641604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 5)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { -0.812f }; + float Y[] = { -0.667f }; + int incX = -1; + int incY = 1; + float expected = 1.541604f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 6)"); + }; + + + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 0.251563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 7)"); + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 0.351563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 8)"); + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.481f }; + float Y[] = { 0.523f }; + int incX = -1; + int incY = -1; + float expected = 1.251563f; + float f; + f = cblas_sdsdot (N, alpha, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdsdot(case 9)"); + }; + + + { + int N = 1; + float X[] = { 0.785f }; + float Y[] = { -0.7f }; + int incX = 1; + int incY = -1; + float expected = -0.5495f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 10)"); + }; + + + { + int N = 1; + double X[] = { 0.79 }; + double Y[] = { -0.679 }; + int incX = 1; + int incY = -1; + double expected = -0.53641; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 11)"); + }; + + + { + int N = 1; + float X[] = { 0.474f, -0.27f }; + float Y[] = { -0.144f, -0.392f }; + int incX = 1; + int incY = -1; + float expected[2] = {-0.174096f, -0.146928f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 12) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 12) imag"); + }; + + + { + int N = 1; + float X[] = { 0.474f, -0.27f }; + float Y[] = { -0.144f, -0.392f }; + int incX = 1; + int incY = -1; + float expected[2] = {0.037584f, -0.224688f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 13) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 13) imag"); + }; + + + { + int N = 1; + double X[] = { -0.87, -0.631 }; + double Y[] = { -0.7, -0.224 }; + int incX = 1; + int incY = -1; + double expected[2] = {0.467656, 0.63658}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 14) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 14) imag"); + }; + + + { + int N = 1; + double X[] = { -0.87, -0.631 }; + double Y[] = { -0.7, -0.224 }; + int incX = 1; + int incY = -1; + double expected[2] = {0.750344, -0.24682}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 15) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 15) imag"); + }; + + + { + int N = 1; + float X[] = { -0.457f }; + float Y[] = { 0.839f }; + int incX = -1; + int incY = 1; + float expected = -0.383423f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 16)"); + }; + + + { + int N = 1; + double X[] = { 0.949 }; + double Y[] = { -0.873 }; + int incX = -1; + int incY = 1; + double expected = -0.828477; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 17)"); + }; + + + { + int N = 1; + float X[] = { 0.852f, -0.045f }; + float Y[] = { 0.626f, -0.164f }; + int incX = -1; + int incY = 1; + float expected[2] = {0.525972f, -0.167898f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 18) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 18) imag"); + }; + + + { + int N = 1; + float X[] = { 0.852f, -0.045f }; + float Y[] = { 0.626f, -0.164f }; + int incX = -1; + int incY = 1; + float expected[2] = {0.540732f, -0.111558f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 19) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 19) imag"); + }; + + + { + int N = 1; + double X[] = { -0.786, -0.341 }; + double Y[] = { -0.271, -0.896 }; + int incX = -1; + int incY = 1; + double expected[2] = {-0.09253, 0.796667}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 20) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 20) imag"); + }; + + + { + int N = 1; + double X[] = { -0.786, -0.341 }; + double Y[] = { -0.271, -0.896 }; + int incX = -1; + int incY = 1; + double expected[2] = {0.518542, 0.611845}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 21) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 21) imag"); + }; + + + { + int N = 1; + float X[] = { -0.088f }; + float Y[] = { -0.165f }; + int incX = -1; + int incY = -1; + float expected = 0.01452f; + float f; + f = cblas_sdot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, flteps, "sdot(case 22)"); + }; + + + { + int N = 1; + double X[] = { -0.434 }; + double Y[] = { -0.402 }; + int incX = -1; + int incY = -1; + double expected = 0.174468; + double f; + f = cblas_ddot(N, X, incX, Y, incY); + gsl_test_rel(f, expected, dbleps, "ddot(case 23)"); + }; + + + { + int N = 1; + float X[] = { -0.347f, 0.899f }; + float Y[] = { -0.113f, -0.858f }; + int incX = -1; + int incY = -1; + float expected[2] = {0.810553f, 0.196139f}; + float f[2]; + cblas_cdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotu(case 24) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotu(case 24) imag"); + }; + + + { + int N = 1; + float X[] = { -0.347f, 0.899f }; + float Y[] = { -0.113f, -0.858f }; + int incX = -1; + int incY = -1; + float expected[2] = {-0.732131f, 0.399313f}; + float f[2]; + cblas_cdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], flteps, "cdotc(case 25) real"); + gsl_test_rel(f[1], expected[1], flteps, "cdotc(case 25) imag"); + }; + + + { + int N = 1; + double X[] = { -0.897, -0.204 }; + double Y[] = { -0.759, 0.557 }; + int incX = -1; + int incY = -1; + double expected[2] = {0.794451, -0.344793}; + double f[2]; + cblas_zdotu_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotu(case 26) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotu(case 26) imag"); + }; + + + { + int N = 1; + double X[] = { -0.897, -0.204 }; + double Y[] = { -0.759, 0.557 }; + int incX = -1; + int incY = -1; + double expected[2] = {0.567195, -0.654465}; + double f[2]; + cblas_zdotc_sub(N, X, incX, Y, incY, &f); + gsl_test_rel(f[0], expected[0], dbleps, "zdotc(case 27) real"); + gsl_test_rel(f[1], expected[1], dbleps, "zdotc(case 27) imag"); + }; + + +} diff --git a/gsl-1.9/cblas/test_gbmv.c b/gsl-1.9/cblas/test_gbmv.c new file mode 100644 index 0000000..34eff26 --- /dev/null +++ b/gsl-1.9/cblas/test_gbmv.c @@ -0,0 +1,543 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_gbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = -1.0f; + float beta = -1.0f; + float A[] = { 0.423f, -0.143f, -0.182f, -0.076f, -0.855f, 0.599f, 0.389f, -0.473f, 0.493f, -0.902f, -0.889f, -0.256f, 0.112f, 0.128f, -0.277f, -0.777f }; + float X[] = { 0.488f, 0.029f, -0.633f, 0.84f }; + int incX = -1; + float Y[] = { 0.874f, 0.322f, -0.477f }; + int incY = -1; + float y_expected[] = { -0.101941f, 0.764086f, 0.481914f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 794)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = -1.0f; + float beta = -1.0f; + float A[] = { 0.423f, -0.143f, -0.182f, -0.076f, -0.855f, 0.599f, 0.389f, -0.473f, 0.493f, -0.902f, -0.889f, -0.256f, 0.112f, 0.128f, -0.277f, -0.777f }; + float X[] = { 0.488f, 0.029f, -0.633f, 0.84f }; + int incX = -1; + float Y[] = { 0.874f, 0.322f, -0.477f }; + int incY = -1; + float y_expected[] = { -0.656261f, 0.19575f, 0.055905f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 795)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.066f, -0.153f, -0.619f, 0.174f, 0.777f, 0.543f, 0.614f, -0.446f, -0.138f, -0.767f, 0.725f, 0.222f, 0.165f, -0.063f, -0.047f, 0.267f }; + float X[] = { -0.096f, -0.007f, -0.657f }; + int incX = -1; + float Y[] = { -0.88f, 0.102f, -0.278f, 0.403f }; + int incY = -1; + float y_expected[] = { -0.088f, 0.0102f, -0.0278f, 0.0403f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 796)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.066f, -0.153f, -0.619f, 0.174f, 0.777f, 0.543f, 0.614f, -0.446f, -0.138f, -0.767f, 0.725f, 0.222f, 0.165f, -0.063f, -0.047f, 0.267f }; + float X[] = { -0.096f, -0.007f, -0.657f }; + int incX = -1; + float Y[] = { -0.88f, 0.102f, -0.278f, 0.403f }; + int incY = -1; + float y_expected[] = { -0.088f, 0.0102f, -0.0278f, 0.0403f }; + cblas_sgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgbmv(case 797)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.688, 0.29, 0.442, -0.001, 0.313, -0.073, 0.991, -0.654, -0.12, 0.416, 0.571, 0.932, -0.179, -0.724, 0.492, -0.965 }; + double X[] = { 0.187, -0.338, -0.976, -0.052 }; + int incX = -1; + double Y[] = { -0.101, 0.8, 0.026 }; + int incY = -1; + double y_expected[] = { 0.0083289, -0.0279986, -0.0446472 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 798)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.688, 0.29, 0.442, -0.001, 0.313, -0.073, 0.991, -0.654, -0.12, 0.416, 0.571, 0.932, -0.179, -0.724, 0.492, -0.965 }; + double X[] = { 0.187, -0.338, -0.976, -0.052 }; + int incX = -1; + double Y[] = { -0.101, 0.8, 0.026 }; + int incY = -1; + double y_expected[] = { -0.1141297, 0.0088824, -0.0320568 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 799)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = -0.3; + double beta = -0.3; + double A[] = { 0.746, 0.262, -0.449, -0.954, -0.093, 0.108, -0.496, 0.927, 0.177, 0.729, -0.92, -0.469, 0.87, -0.877, -0.308, -0.806 }; + double X[] = { 0.662, -0.887, 0.261 }; + int incX = -1; + double Y[] = { 0.771, 0.637, -0.177, -0.018 }; + int incY = -1; + double y_expected[] = { -0.048588, -0.467865, 0.0818433, -0.0398619 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 800)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha = -0.3; + double beta = -0.3; + double A[] = { 0.746, 0.262, -0.449, -0.954, -0.093, 0.108, -0.496, 0.927, 0.177, 0.729, -0.92, -0.469, 0.87, -0.877, -0.308, -0.806 }; + double X[] = { 0.662, -0.887, 0.261 }; + int incX = -1; + double Y[] = { 0.771, 0.637, -0.177, -0.018 }; + int incY = -1; + double y_expected[] = { -0.404082, -0.2887797, 0.1876263, -0.1345935 }; + cblas_dgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgbmv(case 801)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.107f, 0.926f, -0.246f, -0.555f, -0.301f, 0.276f, 0.471f, -0.084f, -0.754f, 0.082f, -0.952f, -0.394f, 0.659f, 0.054f, 0.795f, 0.923f, 0.232f, -0.788f, 0.478f, 0.775f, -0.118f, 0.691f, -0.933f, 0.809f, 0.164f, -0.263f, -0.923f, -0.88f, 0.819f, -0.521f, -0.045f, 0.034f }; + float X[] = { 0.407f, 0.895f, 0.301f, 0.769f, -0.269f, -0.465f, 0.455f, -0.628f }; + int incX = -1; + float Y[] = { -0.116f, -0.744f, -0.936f, -0.064f, -0.232f, -0.665f }; + int incY = -1; + float y_expected[] = { -0.806176f, -1.559f, -1.57611f, -0.155463f, 0.098816f, -0.274361f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 802) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 802) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.107f, 0.926f, -0.246f, -0.555f, -0.301f, 0.276f, 0.471f, -0.084f, -0.754f, 0.082f, -0.952f, -0.394f, 0.659f, 0.054f, 0.795f, 0.923f, 0.232f, -0.788f, 0.478f, 0.775f, -0.118f, 0.691f, -0.933f, 0.809f, 0.164f, -0.263f, -0.923f, -0.88f, 0.819f, -0.521f, -0.045f, 0.034f }; + float X[] = { 0.407f, 0.895f, 0.301f, 0.769f, -0.269f, -0.465f, 0.455f, -0.628f }; + int incX = -1; + float Y[] = { -0.116f, -0.744f, -0.936f, -0.064f, -0.232f, -0.665f }; + int incY = -1; + float y_expected[] = { -0.245235f, -0.313725f, -0.798094f, 0.691455f, -0.164015f, -0.242714f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 803) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 803) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.258f, 0.838f, -0.106f, -0.066f, 0.395f, 0.982f, -0.546f, 0.565f, 0.14f, -0.18f, 0.165f, -0.186f, 0.499f, -0.038f, -0.305f, -0.653f, -0.811f, -0.466f, -0.674f, -0.013f, -0.552f, -0.807f, -0.536f, 0.864f, -0.027f, -0.606f, 0.459f, 0.564f, -0.968f, 0.717f, -0.312f, -0.485f }; + float X[] = { -0.399f, 0.459f, 0.398f, 0.358f, -0.161f, -0.359f }; + int incX = -1; + float Y[] = { 0.572f, 0.293f, -0.813f, -0.096f, -0.611f, -0.717f, 0.736f, 0.259f }; + int incY = -1; + float y_expected[] = { -0.619961f, -0.011425f, -0.477499f, 0.059361f, -0.886984f, 0.44008f, -0.139432f, 0.04644f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 804) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 804) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.258f, 0.838f, -0.106f, -0.066f, 0.395f, 0.982f, -0.546f, 0.565f, 0.14f, -0.18f, 0.165f, -0.186f, 0.499f, -0.038f, -0.305f, -0.653f, -0.811f, -0.466f, -0.674f, -0.013f, -0.552f, -0.807f, -0.536f, 0.864f, -0.027f, -0.606f, 0.459f, 0.564f, -0.968f, 0.717f, -0.312f, -0.485f }; + float X[] = { -0.399f, 0.459f, 0.398f, 0.358f, -0.161f, -0.359f }; + int incX = -1; + float Y[] = { 0.572f, 0.293f, -0.813f, -0.096f, -0.611f, -0.717f, 0.736f, 0.259f }; + int incY = -1; + float y_expected[] = { -0.318227f, -0.172201f, -0.109343f, 0.698685f, 0.208261f, -0.269065f, 0.175074f, -0.507326f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 805) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 805) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.804f, 0.232f, -0.448f, -0.558f, -0.078f, -0.056f, -0.345f, -0.379f, 0.369f, -0.662f, -0.169f, -0.391f, -0.215f, 0.467f, 0.374f, 0.889f, -0.698f, 0.734f, 0.377f, -0.955f, 0.498f, 0.151f, -0.725f, -0.728f, -0.655f, -0.581f, 0.389f, 0.949f, -0.553f, -0.434f, 0.237f, 0.641f }; + float X[] = { -0.262f, -0.823f, -0.357f, -0.994f, -0.347f, -0.375f }; + int incX = -1; + float Y[] = { -0.683f, -0.87f, -0.708f, 0.071f, 0.575f, -0.575f, 0.845f, 0.032f }; + int incY = -1; + float y_expected[] = { 0.341749f, 0.301992f, -0.306848f, 0.109252f, -0.018347f, -0.747479f, -0.894201f, 0.713246f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 806) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 806) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.804f, 0.232f, -0.448f, -0.558f, -0.078f, -0.056f, -0.345f, -0.379f, 0.369f, -0.662f, -0.169f, -0.391f, -0.215f, 0.467f, 0.374f, 0.889f, -0.698f, 0.734f, 0.377f, -0.955f, 0.498f, 0.151f, -0.725f, -0.728f, -0.655f, -0.581f, 0.389f, 0.949f, -0.553f, -0.434f, 0.237f, 0.641f }; + float X[] = { -0.262f, -0.823f, -0.357f, -0.994f, -0.347f, -0.375f }; + int incX = -1; + float Y[] = { -0.683f, -0.87f, -0.708f, 0.071f, 0.575f, -0.575f, 0.845f, 0.032f }; + int incY = -1; + float y_expected[] = { -0.562773f, -0.455143f, -0.213881f, -0.466169f, -0.183683f, 0.097891f, -0.451416f, 0.052586f }; + cblas_cgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgbmv(case 807) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgbmv(case 807) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.919, -0.002, 0.105, -0.338, -0.358, -0.715, -0.157, 0.307, 0.334, 0.121, 0.366, 0.029, -0.006, -0.662, -0.314, 0.061, -0.322, -0.865, -0.586, 0.556, 0.507, 0.581, 0.855, -0.09, 0.836, -0.788, -0.209, -0.694, -0.695, 0.11, -0.234, 0.17 }; + double X[] = { 0.356, -0.76, -0.96, 0.437, -0.849, 0.397, -0.382, -0.826 }; + int incX = -1; + double Y[] = { 0.288, -0.832, 0.889, 0.576, -0.809, 0.4 }; + int incY = -1; + double y_expected[] = { 0.3241775, -0.6761577, 0.8458527, 0.5705165, -0.8597295, 0.4268499 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 808) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 808) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.919, -0.002, 0.105, -0.338, -0.358, -0.715, -0.157, 0.307, 0.334, 0.121, 0.366, 0.029, -0.006, -0.662, -0.314, 0.061, -0.322, -0.865, -0.586, 0.556, 0.507, 0.581, 0.855, -0.09, 0.836, -0.788, -0.209, -0.694, -0.695, 0.11, -0.234, 0.17 }; + double X[] = { 0.356, -0.76, -0.96, 0.437, -0.849, 0.397, -0.382, -0.826 }; + int incX = -1; + double Y[] = { 0.288, -0.832, 0.889, 0.576, -0.809, 0.4 }; + int incY = -1; + double y_expected[] = { 0.4026074, -0.8033768, 0.7510795, 0.5671044, -0.8162255, 0.3349099 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 809) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 809) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.511, -0.707, -0.906, 0.345, -0.524, -0.933, 0.154, -0.529, -0.651, -0.851, 0.104, 0.532, -0.297, 0.477, 0.511, 0.469, -0.888, -0.789, 0.656, 0.288, -0.749, 0.961, 0.571, 0.539, 0.465, 0.647, 0.653, -0.994, -0.515, 0.297, 0.35, -0.707 }; + double X[] = { -0.991, 0.658, -0.909, -0.99, -0.517, -0.071 }; + int incX = -1; + double Y[] = { 0.451, 0.351, -0.113, -0.62, 0.983, 0.511, 0.142, -0.186 }; + int incY = -1; + double y_expected[] = { 0.560921, -1.094193, -0.210397, -0.613323, 3.018979, 0.641612, 0.384166, 1.11801 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 810) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 810) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.511, -0.707, -0.906, 0.345, -0.524, -0.933, 0.154, -0.529, -0.651, -0.851, 0.104, 0.532, -0.297, 0.477, 0.511, 0.469, -0.888, -0.789, 0.656, 0.288, -0.749, 0.961, 0.571, 0.539, 0.465, 0.647, 0.653, -0.994, -0.515, 0.297, 0.35, -0.707 }; + double X[] = { -0.991, 0.658, -0.909, -0.99, -0.517, -0.071 }; + int incX = -1; + double Y[] = { 0.451, 0.351, -0.113, -0.62, 0.983, 0.511, 0.142, -0.186 }; + int incY = -1; + double y_expected[] = { -0.435541, 0.015793, -0.926518, 1.122561, 1.671751, -0.257493, 0.187543, 1.066818 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 811) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 811) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.534, 0.67, -0.621, 0.143, -0.794, 0.073, 0.414, -0.9, 0.155, -0.368, 0.122, -0.583, 0.03, 0.646, -0.768, -0.892, -0.741, -0.397, 0.626, 0.004, -0.515, 0.355, 0.196, -0.989, -0.982, 0.985, 0.445, 0.63, -0.849, -0.528, 0.146, -0.319 }; + double X[] = { -0.199, -0.259, 0.386, -0.131, -0.867, 0.888 }; + int incX = -1; + double Y[] = { 0.106, 0.874, 0.962, 0.636, -0.759, 0.415, -0.053, 0.315 }; + int incY = -1; + double y_expected[] = { -0.139603, -0.250546, -0.3107376, -0.1144656, 0.2181809, -0.0877031, 0.0149724, -0.0224571 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 812) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 812) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 3; + int N = 4; + int KL = 1; + int KU = 1; + int lda = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.534, 0.67, -0.621, 0.143, -0.794, 0.073, 0.414, -0.9, 0.155, -0.368, 0.122, -0.583, 0.03, 0.646, -0.768, -0.892, -0.741, -0.397, 0.626, 0.004, -0.515, 0.355, 0.196, -0.989, -0.982, 0.985, 0.445, 0.63, -0.849, -0.528, 0.146, -0.319 }; + double X[] = { -0.199, -0.259, 0.386, -0.131, -0.867, 0.888 }; + int incX = -1; + double Y[] = { 0.106, 0.874, 0.962, 0.636, -0.759, 0.415, -0.053, 0.315 }; + int incY = -1; + double y_expected[] = { -0.1642353, -0.2575697, -0.3610975, -0.1305629, 0.1713576, -0.2514988, 0.0195631, -0.0648656 }; + cblas_zgbmv(order, trans, M, N, KU, KL, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgbmv(case 813) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgbmv(case 813) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_gemm.c b/gsl-1.9/cblas/test_gemm.c new file mode 100644 index 0000000..aafa4f3 --- /dev/null +++ b/gsl-1.9/cblas/test_gemm.c @@ -0,0 +1,1399 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_gemm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { 0.199f, 0.237f, 0.456f, 0.377f }; + int lda = 4; + float B[] = { 0.842f, -0.734f, 0.323f, -0.957f, -0.303f, -0.873f, -0.871f, -0.819f }; + int ldb = 2; + float C[] = { 0.498f, -0.925f }; + int ldc = 2; + float C_expected[] = { -0.222426f, -1.07973f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1466)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.83f, 0.922f, -0.228f, -0.003f }; + int lda = 1; + float B[] = { 0.072f, 0.345f, 0.944f, -0.39f, -0.577f, 0.656f, -0.693f, -0.453f }; + int ldb = 4; + float C[] = { 0.583f, 0.522f }; + int ldc = 1; + float C_expected[] = { 0.044268f, 1.24311f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1467)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 0.1f; + float A[] = { -0.838f, 0.622f, -0.494f, 0.304f }; + int lda = 4; + float B[] = { 0.147f, 0.134f, 0.169f, 0.734f, -0.7f, 0.541f, -0.794f, -0.256f }; + int ldb = 4; + float C[] = { -0.632f, -0.559f }; + int ldc = 2; + float C_expected[] = { -0.0532188f, 0.0678514f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1468)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 0.1f; + float A[] = { -0.937f, 0.635f, 0.596f, -0.51f }; + int lda = 1; + float B[] = { -0.688f, -0.265f, 0.049f, 0.133f, -0.918f, -0.147f, 0.977f, -0.21f }; + int ldb = 2; + float C[] = { 0.844f, 0.999f }; + int ldc = 1; + float C_expected[] = { 0.0474373f, 0.135125f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1469)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.165f, 0.638f, 0.346f, -0.697f }; + int lda = 1; + float B[] = { 0.499f, -0.73f, 0.262f, 0.759f, 0.664f, 0.997f, -0.702f, -0.839f }; + int ldb = 2; + float C[] = { 0.17f, 0.425f }; + int ldc = 2; + float C_expected[] = { -0.224158f, -0.417831f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1470)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.603f, -0.714f, -0.893f, 0.046f }; + int lda = 4; + float B[] = { 0.859f, -0.694f, -0.868f, -0.98f, -0.103f, 0.567f, -0.277f, -0.734f }; + int ldb = 4; + float C[] = { 0.517f, -0.622f }; + int ldc = 1; + float C_expected[] = { -0.160575f, -0.0234604f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1471)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.087f, -0.047f, -0.051f, -0.615f }; + int lda = 1; + float B[] = { -0.722f, -0.077f, 0.563f, 0.501f, 0.855f, 0.605f, 0.556f, -0.627f }; + int ldb = 4; + float C[] = { -0.181f, -0.89f }; + int ldc = 2; + float C_expected[] = { -0.208039f, -0.864557f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1472)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.753f, -0.074f, -0.247f, -0.19f }; + int lda = 4; + float B[] = { 0.061f, 0.743f, 0.22f, -0.682f, 0.733f, 0.417f, 0.772f, 0.665f }; + int ldb = 2; + float C[] = { -0.253f, 0.972f }; + int ldc = 1; + float C_expected[] = { -0.291994f, 0.898164f }; + cblas_sgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "sgemm(case 1473)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = 0; + double beta = 0; + double A[] = { 0.017, 0.191, 0.863, -0.97 }; + int lda = 4; + double B[] = { -0.207, -0.916, -0.278, 0.403, 0.885, 0.409, -0.772, -0.27 }; + int ldb = 2; + double C[] = { -0.274, -0.858 }; + int ldc = 2; + double C_expected[] = { 0.0, 0.0 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1474)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = 0; + double beta = 0; + double A[] = { 0.571, 0.081, 0.109, 0.988 }; + int lda = 1; + double B[] = { -0.048, -0.753, -0.8, -0.89, -0.535, -0.017, -0.018, -0.544 }; + int ldb = 4; + double C[] = { -0.876, -0.792 }; + int ldc = 1; + double C_expected[] = { 0.0, 0.0 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1475)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { 0.939, 0.705, 0.977, 0.4 }; + int lda = 4; + double B[] = { -0.089, -0.822, 0.937, 0.159, 0.789, -0.413, -0.172, 0.88 }; + int ldb = 4; + double C[] = { -0.619, 0.063 }; + int ldc = 2; + double C_expected[] = { -0.7137904, -0.1270986 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1476)"); + } + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.795, 0.81, 0.388, 0.09 }; + int lda = 1; + double B[] = { -0.847, 0.031, -0.938, 0.09, -0.286, -0.478, -0.981, 0.881 }; + int ldb = 2; + double C[] = { -0.242, -0.02 }; + int ldc = 1; + double C_expected[] = { -0.1562981, -0.0026243 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1477)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = -1; + double beta = 0; + double A[] = { -0.556, 0.532, 0.746, 0.673 }; + int lda = 1; + double B[] = { -0.525, 0.967, 0.687, -0.024, 0.527, 0.485, 0.109, -0.46 }; + int ldb = 2; + double C[] = { -0.495, 0.859 }; + int ldc = 2; + double C_expected[] = { -1.123883, 0.49819 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1478)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha = -1; + double beta = 0; + double A[] = { -0.358, 0.224, -0.941, 0.513 }; + int lda = 4; + double B[] = { -0.201, -0.159, -0.586, -0.016, -0.324, 0.411, 0.115, -0.229 }; + int ldb = 4; + double C[] = { 0.558, 0.596 }; + int ldc = 1; + double C_expected[] = { -0.57956, 0.017636 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1479)"); + } + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.586, 0.809, 0.709, -0.524 }; + int lda = 1; + double B[] = { 0.768, 0.7, 0.619, -0.478, -0.129, -0.778, -0.432, 0.454 }; + int ldb = 4; + double C[] = { 0.042, 0.252 }; + int ldc = 2; + double C_expected[] = { -0.1996785, 0.5813976 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1480)"); + } + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.164, 0.522, 0.948, -0.624 }; + int lda = 4; + double B[] = { -0.142, 0.778, 0.359, 0.622, -0.637, -0.757, -0.282, -0.805 }; + int ldb = 2; + double C[] = { -0.09, 0.183 }; + int ldc = 1; + double C_expected[] = { -0.0248334, 0.1884672 }; + cblas_dgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dgemm(case 1481)"); + } + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.082f, -0.281f, -0.096f, 0.913f, 0.974f, -0.706f, -0.773f, 0.522f }; + int lda = 4; + float B[] = { 0.745f, -0.664f, 0.352f, -0.733f, 0.304f, -0.555f, -0.493f, -0.089f, 0.188f, 0.631f, 0.235f, 0.152f, -0.299f, -0.731f, -0.686f, -0.332f }; + int ldb = 2; + float C[] = { -0.179f, -0.284f, -0.996f, -0.414f }; + int ldc = 2; + float C_expected[] = { -1.06679f, 1.47116f, 0.599689f, 0.933532f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1482) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1482) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.044f, -0.33f, 0.279f, 0.712f, -0.363f, -0.788f, -0.768f, -0.551f }; + int lda = 1; + float B[] = { 0.138f, 0.927f, -0.178f, -0.864f, 0.888f, 0.844f, -0.199f, 0.706f, -0.034f, 0.483f, 0.499f, 0.664f, 0.648f, 0.324f, 0.97f, 0.609f }; + int ldb = 4; + float C[] = { -0.129f, 0.842f, 0.214f, -0.626f }; + int ldc = 1; + float C_expected[] = { 1.81122f, 1.76205f, 1.0574f, -0.564966f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1483) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1483) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.812f, -0.471f, 0.241f, 0.795f, 0.439f, 0.131f, -0.636f, 0.531f }; + int lda = 4; + float B[] = { 0.062f, 0.807f, 0.873f, 0.372f, 0.239f, 0.804f, 0.537f, -0.954f, -0.396f, 0.838f, 0.081f, 0.15f, 0.489f, -0.438f, 0.165f, 0.429f }; + int ldb = 4; + float C[] = { 0.868f, 0.329f, -0.509f, 0.724f }; + int ldc = 2; + float C_expected[] = { -0.868f, -0.329f, 0.509f, -0.724f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1484) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1484) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.832f, 0.198f, 0.794f, -0.522f, -0.319f, 0.578f, 0.332f, 0.746f }; + int lda = 1; + float B[] = { -0.361f, 0.187f, -0.163f, -0.781f, 0.536f, 0.888f, -0.969f, 0.899f, 0.961f, -0.583f, 0.753f, 0.29f, -0.997f, 0.729f, -0.352f, -0.2f }; + int ldb = 2; + float C[] = { 0.864f, 0.735f, -0.074f, -0.228f }; + int ldc = 1; + float C_expected[] = { -0.864f, -0.735f, 0.074f, 0.228f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1485) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1485) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.149f, 0.187f, 0.263f, -0.715f, -0.882f, -0.907f, 0.87f, -0.527f }; + int lda = 4; + float B[] = { -0.915f, -0.249f, -0.986f, -0.799f, -0.136f, 0.712f, 0.964f, 0.799f, -0.569f, 0.686f, 0.603f, 0.758f, 0.161f, -0.698f, -0.263f, -0.256f }; + int ldb = 4; + float C[] = { 0.622f, -0.824f, -0.482f, -0.161f }; + int ldc = 2; + float C_expected[] = { -0.246901f, 0.083044f, 1.25556f, 0.009106f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1486) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1486) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.963f, -0.943f, -0.734f, -0.253f, 0.832f, 0.545f, -0.815f, -0.434f }; + int lda = 1; + float B[] = { 0.23f, -0.211f, 0.906f, 0.232f, -0.339f, 0.597f, -0.919f, 0.793f, 0.535f, 0.526f, 0.119f, 0.053f, 0.751f, 0.044f, 0.752f, -0.469f }; + int ldb = 2; + float C[] = { 0.483f, -0.266f, -0.224f, -0.692f }; + int ldc = 1; + float C_expected[] = { -0.047537f, 0.667177f, 1.02025f, 0.823778f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1487) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1487) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.657f, -0.497f, -0.293f, -0.168f, -0.943f, -0.181f, 0.569f, 0.91f }; + int lda = 1; + float B[] = { -0.047f, 0.796f, -0.913f, 0.998f, 0.365f, 0.467f, -0.627f, -0.523f, 0.885f, 0.234f, -0.494f, 0.071f, -0.361f, -0.154f, -0.055f, -0.32f }; + int ldb = 2; + float C[] = { 0.956f, 0.268f, 0.152f, 0.717f }; + int ldc = 2; + float C_expected[] = { -0.668685f, 0.134477f, -0.715786f, -0.478065f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1488) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1488) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.394f, -0.482f, 0.631f, -0.833f, 0.221f, 0.672f, 0.2f, 0.967f }; + int lda = 4; + float B[] = { 0.708f, 0.695f, 0.111f, -0.912f, 0.376f, 0.606f, -0.997f, -0.741f, 0.349f, 0.543f, 0.372f, -0.563f, 0.129f, -0.295f, -0.672f, -0.95f }; + int ldb = 4; + float C[] = { 0.436f, 0.752f, 0.074f, 0.209f }; + int ldc = 1; + float C_expected[] = { -0.325083f, -0.301952f, -0.283022f, 0.339919f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1489) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1489) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.827f, -0.862f, 0.373f, -0.265f, -0.9f, 0.892f, -0.319f, 0.151f }; + int lda = 1; + float B[] = { 0.603f, 0.816f, -0.511f, 0.831f, -0.36f, -0.954f, -0.978f, 0.485f, 0.675f, 0.186f, 0.463f, 0.144f, 0.851f, -0.458f, 0.766f, -0.213f }; + int ldb = 4; + float C[] = { -0.335f, 0.333f, -0.4f, 0.422f }; + int ldc = 2; + float C_expected[] = { 2.7126f, 0.702111f, 0.437661f, 0.691294f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1490) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1490) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.966f, 0.476f, -0.013f, -0.655f, 0.773f, -0.543f, -0.231f, -0.353f }; + int lda = 4; + float B[] = { -0.684f, 0.144f, 0.018f, -0.77f, -0.688f, 0.909f, -0.094f, -0.938f, -0.757f, 0.574f, -0.479f, 0.473f, 0.0f, 0.064f, -0.168f, 0.858f }; + int ldb = 2; + float C[] = { -0.912f, 0.54f, 0.756f, 0.024f }; + int ldc = 1; + float C_expected[] = { -0.156236f, 0.839112f, -0.230206f, -0.106256f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1491) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1491) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.66f, -0.113f, -0.663f, -0.856f, 0.614f, -0.344f, -0.964f, -0.532f }; + int lda = 1; + float B[] = { -0.606f, -0.965f, -0.279f, -0.312f, 0.63f, 0.967f, 0.041f, -0.557f, 0.663f, 0.619f, -0.134f, 0.261f, -0.388f, 0.525f, 0.222f, 0.538f }; + int ldb = 4; + float C[] = { 0.114f, -0.376f, -0.851f, -0.682f }; + int ldc = 2; + float C_expected[] = { 0.114f, -0.376f, -0.851f, -0.682f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1492) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1492) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.212f, -0.752f, 0.679f, 0.49f, -0.029f, -0.488f, 0.567f, 0.374f }; + int lda = 4; + float B[] = { -0.914f, 0.734f, -0.845f, 0.059f, -0.297f, 0.152f, -0.417f, -0.669f, 0.831f, -0.544f, 0.022f, 0.102f, -0.379f, -0.357f, -0.394f, -0.588f }; + int ldb = 2; + float C[] = { -0.584f, 0.373f, 0.235f, 0.521f }; + int ldc = 1; + float C_expected[] = { -0.584f, 0.373f, 0.235f, 0.521f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1493) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1493) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.135f, 0.128f, 0.909f, -0.963f, 0.299f, -0.944f, 0.944f, 0.942f }; + int lda = 1; + float B[] = { 0.924f, -0.317f, -0.992f, -0.854f, -0.435f, 0.102f, 0.126f, 0.862f, 0.952f, 0.68f, 0.545f, 0.168f, 0.752f, 0.549f, 0.687f, -0.76f }; + int ldb = 2; + float C[] = { -0.369f, -0.33f, 0.849f, -0.632f }; + int ldc = 2; + float C_expected[] = { 0.326537f, 0.37603f, -0.86067f, 0.529817f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1494) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1494) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.061f, -0.271f, -0.043f, -0.023f, 0.694f, 0.333f, 0.733f, -0.967f }; + int lda = 4; + float B[] = { 0.088f, -0.607f, 0.589f, 0.375f, -0.897f, -0.954f, -0.216f, -0.195f, -0.865f, -0.511f, -0.219f, 0.535f, 0.976f, 0.582f, 0.464f, -0.041f }; + int ldb = 4; + float C[] = { 0.533f, -0.63f, 0.405f, 0.667f }; + int ldc = 1; + float C_expected[] = { -0.459906f, 0.552595f, -0.425391f, -0.533626f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1495) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1495) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { -0.676f, -0.116f, 0.707f, -0.256f, -0.893f, -0.966f, 0.159f, -0.246f }; + int lda = 1; + float B[] = { 0.059f, 0.281f, -0.93f, -0.263f, 0.583f, -0.11f, 0.639f, -0.96f, -0.878f, 0.984f, 0.058f, 0.977f, -0.567f, 0.561f, -0.048f, -0.798f }; + int ldb = 4; + float C[] = { 0.362f, -0.808f, 0.428f, -0.112f }; + int ldc = 2; + float C_expected[] = { 0.362f, -0.808f, 0.428f, -0.112f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1496) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1496) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { -0.915f, 0.439f, 0.171f, -0.019f, 0.843f, 0.944f, -0.581f, 0.856f }; + int lda = 4; + float B[] = { -0.284f, 0.207f, -0.27f, 0.832f, 0.894f, -0.626f, -0.305f, -0.006f, 0.562f, -0.744f, -0.533f, 0.126f, -0.375f, -0.333f, 0.275f, 0.748f }; + int ldb = 2; + float C[] = { -0.763f, -0.829f, 0.708f, -0.613f }; + int ldc = 1; + float C_expected[] = { -0.763f, -0.829f, 0.708f, -0.613f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1497) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1497) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.496f, -0.9f, 0.825f, -0.678f, 0.41f, -0.585f, -0.264f, 0.308f }; + int lda = 1; + float B[] = { 0.907f, 0.972f, -0.724f, 0.745f, -0.601f, 0.589f, 0.759f, -0.521f, -0.161f, -0.321f, 0.341f, -0.981f, -0.378f, -0.671f, -0.314f, -0.878f }; + int ldb = 4; + float C[] = { -0.293f, 0.07f, 0.087f, -0.542f }; + int ldc = 2; + float C_expected[] = { 0.10357f, -0.163927f, 0.444626f, -0.0076744f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1498) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1498) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.225f, -0.629f, -0.939f, -0.836f, -0.841f, -0.794f, 0.836f, -0.65f }; + int lda = 4; + float B[] = { 0.869f, -0.453f, 0.8f, -0.947f, 0.545f, 0.716f, -0.507f, -0.228f, 0.722f, 0.372f, 0.77f, 0.317f, -0.153f, -0.524f, -0.465f, -0.684f }; + int ldb = 2; + float C[] = { -0.896f, 0.91f, -0.973f, -0.269f }; + int ldc = 1; + float C_expected[] = { -1.18974f, -1.0134f, 0.189027f, -1.14494f }; + cblas_cgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cgemm(case 1499) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cgemm(case 1499) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.33, 0.457, 0.428, -0.19, 0.86, -0.53, 0.058, -0.942 }; + int lda = 4; + double B[] = { 0.434, 0.653, -0.124, 0.191, -0.112, -0.84, -0.72, 0.075, -0.503, -0.109, 0.3, -0.898, 0.489, 0.384, 0.993, -0.804 }; + int ldb = 2; + double C[] = { -0.792, -0.155, -0.608, -0.243 }; + int ldc = 2; + double C_expected[] = { 0.042563, -0.465908, -0.649991, -1.621116 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1500) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1500) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { 0.726, -0.438, -0.23, -0.054, -0.019, 0.902, -0.883, -0.235 }; + int lda = 1; + double B[] = { 0.159, -0.18, 0.386, -0.167, 0.971, -0.072, 0.87, -0.839, 0.474, 0.956, -0.235, 0.332, 0.826, -0.056, -0.941, 0.01 }; + int ldb = 4; + double C[] = { -0.799, 0.973, -0.549, -0.177 }; + int ldc = 1; + double C_expected[] = { -0.181084, 0.257841, 2.251901, 1.558195 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1501) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1501) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.109, 0.892, -0.723, 0.793, 0.109, -0.419, -0.534, 0.448 }; + int lda = 4; + double B[] = { -0.875, -0.31, -0.027, 0.067, 0.274, -0.126, -0.548, 0.497, 0.681, 0.388, 0.909, 0.889, 0.982, -0.074, -0.788, 0.233 }; + int ldb = 4; + double C[] = { 0.503, 0.067, 0.239, 0.876 }; + int ldc = 2; + double C_expected[] = { 0.6553584, 0.0864583, 0.2559136, 0.7518389 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1502) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1502) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.334, 0.192, -0.992, -0.168, 0.154, -0.75, -0.797, -0.76 }; + int lda = 1; + double B[] = { -0.82, 0.147, -0.237, 0.68, 0.317, 0.257, -0.406, -0.802, 0.058, 0.012, -0.832, 0.949, -0.263, -0.085, -0.064, 0.492 }; + int ldb = 2; + double C[] = { 0.079, -0.602, -0.392, 0.316 }; + int ldc = 1; + double C_expected[] = { 0.0980569, -0.6430449, -0.539207, 0.4226848 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1503) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1503) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.305, -0.698, -0.072, -0.383, 0.364, -0.656, 0.819, 0.194 }; + int lda = 4; + double B[] = { 0.682, 0.498, -0.389, 0.923, -0.853, -0.558, -0.722, -0.085, -0.27, 0.026, -0.107, -0.036, 0.644, -0.327, -0.894, 0.34 }; + int ldb = 4; + double C[] = { 0.981, -0.336, -0.377, -0.41 }; + int ldc = 2; + double C_expected[] = { -0.981, 0.336, 0.377, 0.41 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1504) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1504) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 111; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.306, -0.709, -0.196, 0.285, 0.873, -0.802, 0.715, -0.179 }; + int lda = 1; + double B[] = { 0.028, 0.109, 0.87, -0.446, 0.735, 0.731, 0.021, -0.186, 0.541, 0.97, -0.333, 0.002, -0.089, -0.01, 0.331, 0.851 }; + int ldb = 2; + double C[] = { 0.902, -0.584, -0.695, -0.607 }; + int ldc = 1; + double C_expected[] = { -0.902, 0.584, 0.695, 0.607 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1505) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1505) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.517, -0.136, 0.72, -0.237, 0.121, -0.66, 0.005, 0.759 }; + int lda = 1; + double B[] = { -0.606, 0.049, 0.807, -0.236, -0.258, -0.412, 0.75, -0.659, 0.993, -0.029, -0.968, 0.707, -0.362, -0.005, 0.096, -0.241 }; + int ldb = 2; + double C[] = { 0.63, 0.922, 0.025, -0.535 }; + int ldc = 2; + double C_expected[] = { 1.117044, 1.983417, -1.276831, -0.447092 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1506) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1506) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.064, 0.371, -0.01, -0.262, 0.143, -0.081, 0.1, -0.062 }; + int lda = 4; + double B[] = { -0.749, 0.289, -0.239, -0.226, 0.284, 0.668, 0.305, 0.075, -0.36, 0.166, -0.416, 0.234, -0.267, 0.525, 0.116, -0.561 }; + int ldb = 4; + double C[] = { 0.671, 0.763, 0.444, -0.246 }; + int ldc = 1; + double C_expected[] = { 0.753107, 0.896395, 0.481996, -0.263126 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1507) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1507) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.956, -0.751, 0.671, -0.633, 0.648, -0.042, 0.948, 0.826 }; + int lda = 1; + double B[] = { 0.921, 0.506, -0.609, 0.817, -0.686, 0.991, 0.616, -0.482, -0.02, -0.34, 0.559, 0.976, 0.431, 0.385, -0.164, -0.778 }; + int ldb = 4; + double C[] = { 0.074, -0.01, 0.165, 0.166 }; + int ldc = 2; + double C_expected[] = { 0.166046, 0.491557, 1.473191, -0.033821 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1508) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1508) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.698, -0.062, 0.023, 0.704, 0.443, -0.46, 0.541, 0.296 }; + int lda = 4; + double B[] = { 0.787, -0.199, 0.835, -0.276, -0.515, 0.467, -0.76, -0.483, 0.015, -0.394, -0.748, 0.02, 0.573, 0.3, -0.088, -0.238 }; + int ldb = 2; + double C[] = { 0.935, -0.655, -0.797, 0.071 }; + int ldc = 1; + double C_expected[] = { -1.070679, 0.178755, -0.344714, -0.308137 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1509) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1509) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.202, -0.219, 0.741, 0.527, 0.054, 0.16, -0.359, 0.338 }; + int lda = 1; + double B[] = { -0.872, 0.995, 0.722, 0.618, -0.27, 0.939, -0.743, 0.547, -0.864, 0.376, -0.997, -0.63, 0.887, -0.454, 0.436, -0.039 }; + int ldb = 4; + double C[] = { -0.684, 0.463, -0.386, -0.524 }; + int ldc = 2; + double C_expected[] = { 0.1423153, -0.066679, 0.1175618, 0.0012949 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1510) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1510) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 112; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0.1}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.855, -0.173, -0.679, 0.824, 0.469, 0.786, 0.757, -0.109 }; + int lda = 4; + double B[] = { 0.483, -0.888, -0.757, 0.551, -0.81, 0.23, -0.078, 0.725, -0.592, 0.394, 0.884, 0.802, -0.813, -0.016, -0.853, 0.783 }; + int ldb = 2; + double C[] = { 0.181, -0.368, -0.864, -0.784 }; + int ldc = 1; + double C_expected[] = { 0.1728438, 0.1183508, 0.2526999, 0.3004174 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1511) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1511) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.446, -0.65, -0.724, 0.014, 0.792, -0.695, -0.81, -0.358 }; + int lda = 1; + double B[] = { -0.08, 0.216, 0.689, 0.699, 0.073, -0.346, 0.821, -0.668, -0.798, 0.869, 0.451, -0.061, -0.41, 0.316, 0.104, -0.514 }; + int ldb = 2; + double C[] = { -0.476, 0.211, -0.912, -0.243 }; + int ldc = 2; + double C_expected[] = { 1.372475, -0.135616, 0.549353, -1.968747 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1512) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1512) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 111; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.669, 0.046, -0.094, 0.666, 0.23, 0.448, -0.795, -0.142 }; + int lda = 4; + double B[] = { 0.037, -0.154, -0.739, 0.905, 0.793, -0.53, -0.34, 0.428, 0.072, -0.263, -0.603, -0.905, 0.681, -0.083, -0.511, -0.337 }; + int ldb = 4; + double C[] = { 0.247, 0.575, -0.836, -0.883 }; + int ldc = 1; + double C_expected[] = { -0.975939, 0.415528, 0.275533, 0.002716 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1513) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1513) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { 0.369, 0.506, 0.217, -0.739, -0.395, 0.16, -0.329, -0.954 }; + int lda = 1; + double B[] = { -0.622, -0.945, 0.416, -0.884, 0.797, -0.74, 0.519, -0.789, -0.348, 0.563, -0.398, -0.956, 0.227, 0.84, -0.079, 0.847 }; + int ldb = 4; + double C[] = { 0.833, 0.761, 0.074, -0.448 }; + int ldc = 2; + double C_expected[] = { -0.833, -0.761, -0.074, 0.448 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1514) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1514) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 112; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {0, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.141, 0.275, 0.717, 0.775, -0.701, -0.689, -0.883, -0.077 }; + int lda = 4; + double B[] = { -0.526, -0.437, 0.133, -0.209, -0.83, 0.328, 0.916, -0.337, 0.762, -0.664, -0.566, 0.955, 0.168, 0.488, -0.172, -0.535 }; + int ldb = 2; + double C[] = { -0.88, 0.945, 0.416, 0.99 }; + int ldc = 1; + double C_expected[] = { 0.88, -0.945, -0.416, -0.99 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1515) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1515) imag"); + }; + }; + }; + + + { + int order = 101; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { -0.534, -0.013, -0.258, -0.31, -0.211, -0.883, -0.89, -0.499 }; + int lda = 1; + double B[] = { -0.185, -0.798, -0.34, 0.716, 0.035, 0.968, -0.26, 0.784, -0.889, -0.344, -0.685, -0.647, -0.764, 0.03, 0.626, -0.989 }; + int ldb = 4; + double C[] = { -0.793, -0.551, 0.182, 0.838 }; + int ldc = 2; + double C_expected[] = { -0.5507177, -0.0286821, 0.2222276, 0.5197398 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1516) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1516) imag"); + }; + }; + }; + + + { + int order = 102; + int transA = 113; + int transB = 113; + int M = 1; + int N = 2; + int K = 4; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.575, -0.128, -0.702, 0.758, 0.383, -0.914, 0.157, 0.368 }; + int lda = 4; + double B[] = { 0.572, -0.841, 0.223, -0.334, -0.823, -0.84, 0.671, -0.871, 0.241, 0.927, -0.344, 0.281, -0.034, -0.104, 0.587, -0.329 }; + int ldb = 2; + double C[] = { -0.612, 0.167, 0.647, 0.447 }; + int ldc = 1; + double C_expected[] = { -0.7876717, 0.0341179, -0.0800018, 0.5717566 }; + cblas_zgemm(order, transA, transB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zgemm(case 1517) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zgemm(case 1517) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_gemv.c b/gsl-1.9/cblas/test_gemv.c new file mode 100644 index 0000000..9145168 --- /dev/null +++ b/gsl-1.9/cblas/test_gemv.c @@ -0,0 +1,503 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_gemv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.615725f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 774)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.615725f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 775)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.776825f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 776)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float beta = 0.0f; + float A[] = { -0.805f }; + float X[] = { -0.965f }; + int incX = -1; + float Y[] = { 0.537f }; + int incY = -1; + float y_expected[] = { 0.776825f }; + cblas_sgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sgemv(case 777)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -0.3; + double beta = -1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { -0.5445248 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 778)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -0.3; + double beta = -1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { -0.5445248 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 779)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -1; + double beta = 1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { 0.585584 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 780)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha = -1; + double beta = 1; + double A[] = { -0.047 }; + double X[] = { 0.672 }; + int incX = -1; + double Y[] = { 0.554 }; + int incY = -1; + double y_expected[] = { 0.585584 }; + cblas_dgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dgemv(case 781)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.624274f, -0.921216f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 782) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 782) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.624274f, -0.921216f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 783) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 783) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { -0.216261f, 0.654835f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 784) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 784) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { -0.216261f, 0.654835f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 785) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 785) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.427909f, 0.150089f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 786) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 786) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.629f, 0.801f }; + float X[] = { 0.778f, -0.073f }; + int incX = -1; + float Y[] = { -0.976f, -0.682f }; + int incY = -1; + float y_expected[] = { 0.427909f, 0.150089f }; + cblas_cgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "cgemv(case 787) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "cgemv(case 787) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.401726, 0.078178 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 788) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 788) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {0, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.401726, 0.078178 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 789) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 789) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 1}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { -0.040808, 0.517356 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 790) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 790) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 1}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { -0.040808, 0.517356 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 791) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 791) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.540796, -0.053628 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 792) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 792) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.932, -0.724 }; + double X[] = { 0.334, -0.317 }; + int incX = -1; + double Y[] = { 0.348, 0.07 }; + int incY = -1; + double y_expected[] = { 0.540796, -0.053628 }; + cblas_zgemv(order, trans, M, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zgemv(case 793) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zgemv(case 793) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_ger.c b/gsl-1.9/cblas/test_ger.c new file mode 100644 index 0000000..d81fe75 --- /dev/null +++ b/gsl-1.9/cblas/test_ger.c @@ -0,0 +1,283 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_ger (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { -0.515f }; + float X[] = { 0.611f }; + int incX = -1; + float Y[] = { -0.082f }; + int incY = -1; + float A_expected[] = { -0.565102f }; + cblas_sger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "sger(case 1390)"); + } + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { -0.515f }; + float X[] = { 0.611f }; + int incX = -1; + float Y[] = { -0.082f }; + int incY = -1; + float A_expected[] = { -0.565102f }; + cblas_sger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "sger(case 1391)"); + } + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha = 1; + double A[] = { -0.809 }; + double X[] = { -0.652 }; + int incX = -1; + double Y[] = { 0.712 }; + int incY = -1; + double A_expected[] = { -1.273224 }; + cblas_dger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dger(case 1392)"); + } + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha = 1; + double A[] = { -0.809 }; + double X[] = { -0.652 }; + int incX = -1; + double Y[] = { 0.712 }; + int incY = -1; + double A_expected[] = { -1.273224 }; + cblas_dger(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dger(case 1393)"); + } + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgeru(case 1394) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgeru(case 1394) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgerc(case 1395) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgerc(case 1395) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgeru(case 1396) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgeru(case 1396) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.651f, 0.856f }; + float X[] = { -0.38f, -0.235f }; + int incX = -1; + float Y[] = { -0.627f, 0.757f }; + int incY = -1; + float A_expected[] = { -0.651f, 0.856f }; + cblas_cgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cgerc(case 1397) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cgerc(case 1397) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.049724, 0.90607 }; + cblas_zgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgeru(case 1398) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgeru(case 1398) imag"); + }; + }; + }; + + + { + int order = 101; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.060574, 0.86554 }; + cblas_zgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgerc(case 1399) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgerc(case 1399) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.049724, 0.90607 }; + cblas_zgeru(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgeru(case 1400) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgeru(case 1400) imag"); + }; + }; + }; + + + { + int order = 102; + int M = 1; + int N = 1; + int lda = 1; + double alpha[2] = {-1, 0}; + double A[] = { -0.426, 0.757 }; + double X[] = { -0.579, -0.155 }; + int incX = -1; + double Y[] = { 0.831, 0.035 }; + int incY = -1; + double A_expected[] = { 0.060574, 0.86554 }; + cblas_zgerc(order, M, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zgerc(case 1401) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zgerc(case 1401) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hbmv.c b/gsl-1.9/cblas/test_hbmv.c new file mode 100644 index 0000000..dbf4c55 --- /dev/null +++ b/gsl-1.9/cblas/test_hbmv.c @@ -0,0 +1,411 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1086) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1086) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.02698f, 0.521724f, -0.379354f, 1.27743f, -0.25427f, -0.043268f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1087) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1087) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1088) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1088) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.06422f, -0.016288f, 0.734206f, 0.108366f, -0.411982f, 0.347068f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1089) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1089) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1090) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1090) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { 0.19354f, 0.056192f, 0.72585f, 0.42717f, -0.2047f, 0.405354f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1091) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1091) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1092) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1092) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.937f, -0.035f, 0.339f, 0.847f, 0.022f, 0.153f, -0.785f, 0.193f, -0.731f, -0.166f, -0.243f, -0.319f, 0.173f, -0.24f, 0.079f, -0.058f, 0.124f, 0.445f }; + float X[] = { -0.093f, -0.103f, -0.537f, -0.151f, 0.094f, 0.954f }; + int incX = -1; + float Y[] = { 0.029f, -0.391f, -0.256f, 0.031f, -0.478f, 0.098f }; + int incY = -1; + float y_expected[] = { -0.151304f, 0.471592f, -0.507714f, -0.304446f, -1.16395f, -0.299062f }; + cblas_chbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chbmv(case 1093) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chbmv(case 1093) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1094) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1094) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.902712, -0.524419, -0.307439, -2.167713, 1.059385, 1.104445 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1095) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1095) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1096) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1096) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.960834, -0.558818, 1.042598, -1.102864, 0.507945, 0.11149 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1097) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1097) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1098) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1098) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -1.626828, 0.003954, 0.437012, -2.365106, 0.446715, 0.16323 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1099) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1099) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1100) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1100) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.662, 0.24, -0.311, -0.345, -0.782, 0.904, -0.842, 0.065, -0.168, -0.855, -0.692, 0.113, 0.009, -0.707, -0.981, 0.019, -0.687, 0.861 }; + double X[] = { 0.873, -0.509, 0.398, 0.471, 0.214, 0.878 }; + int incX = -1; + double Y[] = { -0.441, -0.781, 0.979, -0.911, 0.879, 0.807 }; + int incY = -1; + double y_expected[] = { -0.097302, -1.204999, 1.168771, -0.822543, 0.734395, 1.379065 }; + cblas_zhbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhbmv(case 1101) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhbmv(case 1101) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hemm.c b/gsl-1.9/cblas/test_hemm.c new file mode 100644 index 0000000..3bc7921 --- /dev/null +++ b/gsl-1.9/cblas/test_hemm.c @@ -0,0 +1,427 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hemm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { -0.126f, 0.079f }; + int lda = 1; + float B[] = { -0.954f, -0.059f, 0.296f, -0.988f }; + int ldb = 2; + float C[] = { -0.859f, -0.731f, 0.737f, 0.593f }; + int ldc = 2; + float C_expected[] = { 0.0723566f, -0.0738796f, -0.0717488f, 0.0699704f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1550) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1550) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.652f, 0.584f }; + int lda = 1; + float B[] = { -0.983f, -0.734f, -0.422f, -0.825f }; + int ldb = 1; + float C[] = { 0.387f, 0.341f, -0.734f, 0.632f }; + int ldc = 1; + float C_expected[] = { 0.0137568f, -0.0253916f, -0.00941f, -0.100914f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1551) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1551) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.78f, 0.885f, 0.507f, 0.765f, 0.911f, -0.461f, 0.707f, 0.508f }; + int lda = 2; + float B[] = { -0.905f, 0.633f, 0.85f, -0.943f }; + int ldb = 2; + float C[] = { 0.045f, -0.237f, 0.078f, -0.252f }; + int ldc = 2; + float C_expected[] = { 0.589611f, -0.759345f, 0.960095f, -0.09013f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1552) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1552) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { 0.947f, 0.939f, -0.267f, -0.819f, -0.827f, -0.937f, 0.991f, 0.838f }; + int lda = 2; + float B[] = { 0.871f, -0.988f, -0.232f, -0.434f }; + int ldb = 1; + float C[] = { -0.261f, 0.927f, -0.351f, -0.203f }; + int ldc = 1; + float C_expected[] = { 1.0551f, 0.496359f, 0.780145f, -1.67298f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1553) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1553) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.593f, -0.9f }; + int lda = 1; + float B[] = { -0.861f, 0.747f, -0.984f, 0.595f }; + int ldb = 2; + float C[] = { -0.589f, -0.671f, -0.011f, -0.417f }; + int ldc = 2; + float C_expected[] = { -0.510573f, 0.442971f, -0.583512f, 0.352835f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1554) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1554) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.79f, 0.132f }; + int lda = 1; + float B[] = { -0.243f, -0.12f, 0.633f, -0.556f }; + int ldb = 1; + float C[] = { -0.658f, -0.74f, -0.47f, 0.481f }; + int ldc = 1; + float C_expected[] = { -0.19197f, -0.0948f, 0.50007f, -0.43924f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1555) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1555) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.114f, -0.515f, -0.513f, -0.527f, -0.995f, 0.986f, 0.229f, -0.076f }; + int lda = 2; + float B[] = { 0.084f, 0.522f, 0.61f, 0.694f }; + int ldb = 2; + float C[] = { 0.802f, 0.136f, -0.161f, -0.364f }; + int ldc = 2; + float C_expected[] = { 0.269101f, 0.716492f, 0.237088f, 0.0290666f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1556) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1556) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.798f, -0.324f, -0.693f, -0.893f, -0.223f, 0.749f, 0.102f, -0.357f }; + int lda = 2; + float B[] = { -0.572f, -0.569f, -0.391f, -0.938f }; + int ldb = 1; + float C[] = { 0.152f, -0.834f, -0.633f, -0.473f }; + int ldc = 1; + float C_expected[] = { 1.08642f, -0.113853f, 0.234826f, -0.48289f }; + cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1557) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1557) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { -0.359, 0.089 }; + int lda = 1; + double B[] = { -0.451, -0.337, -0.901, -0.871 }; + int ldb = 2; + double C[] = { 0.729, 0.631, 0.364, 0.246 }; + int ldc = 2; + double C_expected[] = { -0.0751983, 0.0890909, -0.0558689, 0.0687459 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1558) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1558) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0.1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.044, -0.496 }; + int lda = 1; + double B[] = { -0.674, 0.281, 0.366, 0.888 }; + int ldb = 1; + double C[] = { -0.9, 0.919, 0.857, -0.049 }; + int ldc = 1; + double C_expected[] = { -0.0931364, -0.0929656, 0.0009928, 0.0873104 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1559) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1559) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.314, 0.115, 0.114, 0.878, 0.961, -0.224, 0.973, 0.771 }; + int lda = 2; + double B[] = { 0.5, -0.016, -0.5, 0.149 }; + int ldb = 2; + double C[] = { -0.054, 0.064, 0.02, 0.245 }; + int ldc = 2; + double C_expected[] = { -0.0064, -0.0054, -0.0245, 0.002 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1560) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1560) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.186, 0.578, 0.797, -0.957, -0.539, -0.969, -0.21, 0.354 }; + int lda = 2; + double B[] = { 0.641, -0.968, 0.15, -0.569 }; + int ldb = 1; + double C[] = { -0.556, -0.9, 0.197, 0.31 }; + int ldc = 1; + double C_expected[] = { 0.09, -0.0556, -0.031, 0.0197 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1561) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1561) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.323, 0.641 }; + int lda = 1; + double B[] = { -0.188, 0.091, -0.235, 0.523 }; + int ldb = 2; + double C[] = { 0.919, 0.806, 0.823, -0.94 }; + int ldc = 2; + double C_expected[] = { 0.858276, 0.835393, 0.747095, -0.771071 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1562) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1562) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { -0.688, 0.915 }; + int lda = 1; + double B[] = { 0.914, -0.204, 0.205, -0.476 }; + int ldb = 1; + double C[] = { 0.27, -0.628, -0.079, 0.507 }; + int ldc = 1; + double C_expected[] = { -0.358832, -0.487648, -0.22004, 0.834488 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1563) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1563) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {0, 1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.681, 0.574, -0.425, -0.64, 0.792, 0.661, -0.009, 0.005 }; + int lda = 2; + double B[] = { -0.221, 0.554, -0.465, -0.95 }; + int ldb = 2; + double C[] = { 0.331, -0.958, -0.826, -0.972 }; + int ldc = 2; + double C_expected[] = { 0.778291, 0.142269, -0.496199, 0.112747 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1564) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1564) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {0, 1}; + double beta[2] = {0, 0.1}; + double A[] = { 0.959, 0.34, -0.23, 0.064, 0.516, -0.275, 0.714, 0.899 }; + int lda = 2; + double B[] = { -0.502, -0.987, -0.134, 0.215 }; + int ldb = 1; + double C[] = { 0.929, 0.181, -0.16, -0.921 }; + int ldc = 1; + double C_expected[] = { 0.986459, -0.371458, -0.320548, -0.059384 }; + cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1565) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1565) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hemv.c b/gsl-1.9/cblas/test_hemv.c new file mode 100644 index 0000000..153f1f2 --- /dev/null +++ b/gsl-1.9/cblas/test_hemv.c @@ -0,0 +1,395 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hemv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1070) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1070) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1071) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1071) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1072) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1072) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1073) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1073) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1074) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1074) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1075) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1075) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1076) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1076) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + int N = 1; + int lda = 1; + float A[] = { -0.434f, 0.837f }; + float X[] = { 0.209f, -0.935f }; + int incX = -1; + float Y[] = { 0.346f, -0.412f }; + int incY = -1; + float y_expected[] = { -0.153306f, 0.56399f }; + cblas_chemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chemv(case 1077) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chemv(case 1077) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1078) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1078) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1079) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1079) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1080) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1080) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1081) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1081) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1082) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1082) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1083) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1083) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1084) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1084) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {0, 0}; + double beta[2] = {1, 0}; + int N = 1; + int lda = 1; + double A[] = { 0.036, -0.966 }; + double X[] = { -0.695, 0.886 }; + int incX = -1; + double Y[] = { 0.486, 0.629 }; + int incY = -1; + double y_expected[] = { 0.486, 0.629 }; + cblas_zhemv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhemv(case 1085) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhemv(case 1085) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_her.c b/gsl-1.9/cblas/test_her.c new file mode 100644 index 0000000..d1478f8 --- /dev/null +++ b/gsl-1.9/cblas/test_her.c @@ -0,0 +1,179 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_her (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1410) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1410) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1411) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1411) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1412) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1412) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 1.0f; + float A[] = { 0.188f, 0.856f }; + float X[] = { -0.832f, -0.151f }; + int incX = -1; + float A_expected[] = { 0.903025f, 0.0f }; + cblas_cher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher(case 1413) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher(case 1413) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1414) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1414) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1415) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1415) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1416) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1416) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0.1; + double A[] = { 0.257, 0.326 }; + double X[] = { 0.319, -0.009 }; + int incX = -1; + double A_expected[] = { 0.2671842, 0.0 }; + cblas_zher(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher(case 1417) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher(case 1417) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_her2.c b/gsl-1.9/cblas/test_her2.c new file mode 100644 index 0000000..b1a0fae --- /dev/null +++ b/gsl-1.9/cblas/test_her2.c @@ -0,0 +1,195 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_her2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1450) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1450) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1451) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1451) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1452) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1452) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.821f, 0.954f }; + float X[] = { 0.532f, 0.802f }; + int incX = -1; + float Y[] = { 0.016f, -0.334f }; + int incY = -1; + float A_expected[] = { -0.302288f, 0.0f }; + cblas_cher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], flteps, "cher2(case 1453) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], flteps, "cher2(case 1453) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1454) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1454) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1455) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1455) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1456) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1456) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha[2] = {-0.3, 0.1}; + double A[] = { -0.334, 0.286 }; + double X[] = { -0.14, -0.135 }; + int incX = -1; + double Y[] = { 0.455, 0.358 }; + int incY = -1; + double A_expected[] = { -0.264521, 0.0 }; + cblas_zher2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[2*i], A_expected[2*i], dbleps, "zher2(case 1457) real"); + gsl_test_rel(A[2*i+1], A_expected[2*i+1], dbleps, "zher2(case 1457) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_her2k.c b/gsl-1.9/cblas/test_her2k.c new file mode 100644 index 0000000..9c20962 --- /dev/null +++ b/gsl-1.9/cblas/test_her2k.c @@ -0,0 +1,427 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_her2k (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.178f, 0.545f, -0.491f, 0.979f }; + int lda = 2; + float B[] = { -0.665f, -0.531f, -0.4f, 0.227f }; + int ldb = 2; + float C[] = { 0.115f, -0.193f }; + int ldc = 1; + float C_expected[] = { -0.056236f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1646) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1646) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { -0.808f, 0.447f, 0.145f, -0.226f }; + int lda = 2; + float B[] = { -0.413f, 0.904f, -0.585f, 0.717f }; + int ldb = 2; + float C[] = { -0.725f, -0.244f }; + int ldc = 1; + float C_expected[] = { -0.76435f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1647) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1647) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.337f, -0.737f, -0.993f, 0.69f }; + int lda = 1; + float B[] = { -0.39f, -0.836f, -0.32f, 0.368f }; + int ldb = 1; + float C[] = { 0.844f, -0.763f }; + int ldc = 1; + float C_expected[] = { -2.36596f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1648) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1648) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta = -0.3f; + float A[] = { 0.386f, -0.465f, 0.719f, -0.378f }; + int lda = 1; + float B[] = { 0.099f, -0.879f, 0.864f, 0.141f }; + int ldb = 1; + float C[] = { -0.599f, -0.47f }; + int ldc = 1; + float C_expected[] = { -1.85003f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1649) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1649) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.128f, 0.431f, -0.26f, 0.75f }; + int lda = 1; + float B[] = { 0.276f, 0.058f, 0.904f, -0.116f }; + int ldb = 1; + float C[] = { 0.914f, -0.262f }; + int ldc = 1; + float C_expected[] = { 0.604744f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1650) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1650) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.72f, 0.783f, -0.737f, 0.375f }; + int lda = 1; + float B[] = { 0.531f, 0.167f, 0.203f, -0.221f }; + int ldb = 1; + float C[] = { 0.618f, 0.392f }; + int ldc = 1; + float C_expected[] = { -0.200438f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1651) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1651) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { -0.372f, -0.735f, -0.711f, 0.051f }; + int lda = 2; + float B[] = { 0.257f, 0.097f, 0.338f, -0.484f }; + int ldb = 2; + float C[] = { -0.142f, -0.197f }; + int ldc = 1; + float C_expected[] = { -0.817394f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1652) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1652) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta = -1.0f; + float A[] = { 0.1f, -0.878f, 0.28f, -0.381f }; + int lda = 2; + float B[] = { -0.208f, 0.309f, -0.276f, 0.123f }; + int ldb = 2; + float C[] = { 0.483f, -0.541f }; + int ldc = 1; + float C_expected[] = { -0.03812f, 0.0f }; + cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1653) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1653) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.515, -0.034, 0.067, 0.66 }; + int lda = 2; + double B[] = { 0.408, -0.85, -0.945, -0.799 }; + int ldb = 2; + double C[] = { -0.918, -0.985 }; + int ldc = 1; + double C_expected[] = { -1.62127, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1654) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1654) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { -0.009, 0.495, -0.008, -0.973 }; + int lda = 2; + double B[] = { -0.239, -0.373, -0.032, -0.539 }; + int ldb = 2; + double C[] = { 0.443, -0.245 }; + int ldc = 1; + double C_expected[] = { 1.127438, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1655) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1655) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.531, 0.721, -0.848, 0.826 }; + int lda = 1; + double B[] = { -0.711, -0.2, -0.92, -0.676 }; + int ldb = 1; + double C[] = { -0.447, 0.701 }; + int ldc = 1; + double C_expected[] = { -1.046914, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1656) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1656) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta = 1; + double A[] = { 0.68, 0.079, 0.837, -0.814 }; + int lda = 1; + double B[] = { -0.986, 0.024, 0.584, -0.248 }; + int ldb = 1; + double C[] = { 0.477, -0.551 }; + int ldc = 1; + double C_expected[] = { 0.521192, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1657) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1657) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { -0.63, 0.787, 0.426, -0.568 }; + int lda = 1; + double B[] = { -0.228, 0.302, 0.83, 0.023 }; + int ldb = 1; + double C[] = { 0.354, -0.85 }; + int ldc = 1; + double C_expected[] = { -1.40826, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1658) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1658) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { 0.224, -0.191, 0.46, 0.464 }; + int lda = 1; + double B[] = { -0.815, 0.634, 0.066, -0.873 }; + int ldb = 1; + double C[] = { -0.49, -0.606 }; + int ldc = 1; + double C_expected[] = { 1.307732, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1659) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1659) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { 0.943, 0.075, 0.15, -0.141 }; + int lda = 2; + double B[] = { -0.962, 0.422, -0.592, -0.789 }; + int ldb = 2; + double C[] = { 0.728, 0.601 }; + int ldc = 1; + double C_expected[] = { 1.778934, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1660) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1660) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 1; + int K = 2; + double alpha[2] = {-1, 0}; + double beta = 0.1; + double A[] = { -0.93, -0.386, 0.565, 0.141 }; + int lda = 2; + double B[] = { -0.801, 0.022, 0.558, -0.932 }; + int ldb = 2; + double C[] = { 0.068, 0.501 }; + int ldc = 1; + double C_expected[] = { -1.833792, 0.0 }; + cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1661) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1661) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_herk.c b/gsl-1.9/cblas/test_herk.c new file mode 100644 index 0000000..e245553 --- /dev/null +++ b/gsl-1.9/cblas/test_herk.c @@ -0,0 +1,395 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_herk (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.617f, 0.179f, -0.626f, 0.334f }; + int lda = 1; + float C[] = { 0.346f, -0.903f, 0.022f, -0.839f, -0.715f, 0.049f, -0.338f, 0.149f }; + int ldc = 2; + float C_expected[] = { 0.0346f, 0.0f, 0.0022f, -0.0839f, -0.715f, 0.049f, -0.0338f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1598) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1598) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = 0.1f; + float A[] = { -0.356f, -0.308f, 0.493f, -0.351f }; + int lda = 2; + float C[] = { -0.898f, -0.905f, 0.002f, -0.219f, 0.881f, 0.879f, 0.275f, -0.351f }; + int ldc = 2; + float C_expected[] = { -0.0898f, 0.0f, 0.002f, -0.219f, 0.0881f, 0.0879f, 0.0275f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1599) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1599) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.103f, -0.951f, -0.601f, -0.041f }; + int lda = 2; + float C[] = { -0.918f, -0.018f, 0.991f, -0.789f, -0.698f, -0.067f, 0.956f, -0.599f }; + int ldc = 2; + float C_expected[] = { -0.826499f, 0.0f, 1.00109f, -0.845733f, -0.698f, -0.067f, 0.992288f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1600) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1600) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.237f, 0.925f, -0.904f, -0.091f }; + int lda = 1; + float C[] = { -0.572f, 0.915f, 0.398f, 0.222f, 0.016f, 0.288f, -0.078f, -0.507f }; + int ldc = 2; + float C_expected[] = { -0.480821f, 0.0f, 0.398f, 0.222f, 0.0290073f, 0.373777f, 0.0045497f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1601) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1601) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = 0.0f; + float A[] = { 0.963f, -0.23f, -0.435f, 0.289f }; + int lda = 1; + float C[] = { 0.282f, -0.272f, -0.516f, -0.594f, -0.001f, 0.155f, -0.39f, -0.354f }; + int ldc = 2; + float C_expected[] = { -0.294081f, 0.0f, -0.516f, -0.594f, 0.145613f, -0.0534771f, -0.0818238f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1602) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1602) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = 0.0f; + float A[] = { 0.674f, 0.1f, -0.098f, 0.552f }; + int lda = 2; + float C[] = { 0.089f, -0.523f, -0.551f, 0.618f, 0.67f, 0.247f, 0.975f, -0.714f }; + int ldc = 2; + float C_expected[] = { -0.139283f, 0.0f, 0.0032556f, -0.114554f, 0.67f, 0.247f, -0.0942924f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1603) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1603) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.033f, -0.864f, 0.168f, 0.524f }; + int lda = 2; + float C[] = { 0.788f, 0.016f, -0.436f, 0.749f, -0.89f, -0.87f, 0.421f, -0.203f }; + int ldc = 2; + float C_expected[] = { 0.826385f, 0.0f, -0.436f, 0.749f, -0.536192f, -0.249444f, 0.3449f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1604) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1604) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.957f, -0.079f, 0.935f, 0.232f }; + int lda = 1; + float C[] = { -0.744f, -0.061f, 0.195f, -0.574f, 0.551f, 0.478f, -0.337f, 0.1f }; + int ldc = 2; + float C_expected[] = { 0.84769f, 0.0f, 0.895967f, -0.353289f, 0.551f, 0.478f, 0.894349f, 0.0f }; + cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1605) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1605) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = 1; + double A[] = { 0.934, 0.664, 0.426, 0.263 }; + int lda = 1; + double C[] = { 0.251, -0.97, 0.76, -0.349, 0.152, -0.899, -0.17, 0.707 }; + int ldc = 2; + double C_expected[] = { 1.564252, 0.0, 1.332516, -0.311778, 0.152, -0.899, 0.080645, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1606) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1606) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = 1; + double A[] = { 0.16, 0.464, -0.623, 0.776 }; + int lda = 2; + double C[] = { 0.771, -0.449, 0.776, 0.112, -0.134, 0.317, 0.547, -0.551 }; + int ldc = 2; + double C_expected[] = { 1.011896, 0.0, 0.776, 0.112, 0.126384, -0.096232, 1.537305, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1607) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1607) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = 1; + double A[] = { 0.787, 0.057, -0.49, 0.47 }; + int lda = 2; + double C[] = { -0.758, 0.912, 0.992, -0.356, 0.584, 0.806, 0.965, 0.674 }; + int ldc = 2; + double C_expected[] = { -0.6957382, 0.0, 0.956116, -0.316218, 0.584, 0.806, 1.0111, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1608) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1608) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = 1; + double A[] = { 0.961, -0.384, 0.165, 0.395 }; + int lda = 1; + double C[] = { -0.186, 0.404, -0.873, 0.09, -0.451, -0.972, -0.203, -0.304 }; + int ldc = 2; + double C_expected[] = { -0.0789023, 0.0, -0.873, 0.09, -0.4503115, -0.9277045, -0.184675, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1609) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1609) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -0.3; + double A[] = { 0.04, 0.608, 0.21, -0.44 }; + int lda = 1; + double C[] = { 0.285, -0.943, 0.581, -0.56, 0.112, 0.529, 0.16, -0.913 }; + int ldc = 2; + double C_expected[] = { -0.0855, 0.0, 0.581, -0.56, -0.0336, -0.1587, -0.048, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1610) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1610) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -0.3; + double A[] = { -0.984, -0.398, -0.379, 0.919 }; + int lda = 2; + double C[] = { -0.44, -0.087, 0.156, -0.945, -0.943, -0.355, 0.577, 0.053 }; + int ldc = 2; + double C_expected[] = { 0.132, 0.0, -0.0468, 0.2835, -0.943, -0.355, -0.1731, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1611) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1611) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { 0.269, -0.428, -0.029, 0.964 }; + int lda = 2; + double C[] = { 0.473, -0.932, -0.689, -0.072, -0.952, -0.862, 0.001, 0.282 }; + int ldc = 2; + double C_expected[] = { -0.217455, 0.0, -0.689, -0.072, 0.531607, 0.615096, 0.929137, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1612) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1612) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 113; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { -0.303, -0.037, -0.411, -0.243 }; + int lda = 1; + double C[] = { 0.652, -0.227, -0.849, 0.87, -0.051, -0.535, 0.418, -0.681 }; + int ldc = 2; + double C_expected[] = { -0.558822, 0.0, 0.982524, -0.928422, -0.051, -0.535, -0.19003, 0.0 }; + cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1613) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1613) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hpmv.c b/gsl-1.9/cblas/test_hpmv.c new file mode 100644 index 0000000..a043aad --- /dev/null +++ b/gsl-1.9/cblas/test_hpmv.c @@ -0,0 +1,379 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hpmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1118) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1118) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1119) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1119) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1120) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1120) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1121) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1121) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1122) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1122) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0627557f, -0.839323f, -0.0877262f, -0.169208f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1123) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1123) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1124) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1124) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 1.0f}; + int N = 2; + float A[] = { 0.339f, -0.102f, 0.908f, 0.097f, -0.808f, 0.236f }; + float X[] = { 0.993f, -0.502f, -0.653f, 0.796f }; + int incX = -1; + float Y[] = { -0.35f, 0.339f, -0.269f, -0.122f }; + int incY = -1; + float y_expected[] = { -0.0037603f, -0.816761f, -0.0392456f, -0.121154f }; + cblas_chpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], flteps, "chpmv(case 1125) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], flteps, "chpmv(case 1125) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1126) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1126) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1127) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1127) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1128) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1128) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1129) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1129) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1130) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1130) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.745218, -0.60699, -0.37301, -0.983688 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1131) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1131) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1132) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1132) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + int N = 2; + double A[] = { 0.543, -0.737, 0.281, -0.053, -0.098, -0.826 }; + double X[] = { 0.67, -0.857, -0.613, -0.927 }; + int incX = -1; + double Y[] = { -0.398, -0.934, -0.204, 0.183 }; + int incY = -1; + double y_expected[] = { 0.646956, -0.542012, -0.282168, -0.912668 }; + cblas_zhpmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[2*i], y_expected[2*i], dbleps, "zhpmv(case 1133) real"); + gsl_test_rel(Y[2*i+1], y_expected[2*i+1], dbleps, "zhpmv(case 1133) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hpr.c b/gsl-1.9/cblas/test_hpr.c new file mode 100644 index 0000000..4682b94 --- /dev/null +++ b/gsl-1.9/cblas/test_hpr.c @@ -0,0 +1,171 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hpr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.245116f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1418) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1418) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.308884f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1419) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1419) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.245116f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1420) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1420) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = 0.1f; + float Ap[] = { -0.273f, -0.499f, -0.305f, -0.277f, 0.238f, -0.369f }; + float X[] = { 0.638f, -0.905f, 0.224f, 0.182f }; + int incX = -1; + float Ap_expected[] = { -0.26467f, 0.0f, -0.30718f, -0.308884f, 0.360607f, 0.0f }; + cblas_chpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr(case 1421) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr(case 1421) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, -0.214692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1422) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1422) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, 0.284692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1423) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1423) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, -0.214692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1424) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1424) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = 1; + double Ap[] = { 0.265, 0.362, -0.855, 0.035, 0.136, 0.133 }; + double X[] = { -0.278, -0.686, -0.736, -0.918 }; + int incX = -1; + double Ap_expected[] = { 1.64942, 0.0, -0.020644, 0.284692, 0.68388, 0.0 }; + cblas_zhpr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr(case 1425) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr(case 1425) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_hpr2.c b/gsl-1.9/cblas/test_hpr2.c new file mode 100644 index 0000000..7fb7dee --- /dev/null +++ b/gsl-1.9/cblas/test_hpr2.c @@ -0,0 +1,187 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_hpr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1458) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1458) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1459) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1459) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1460) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1460) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + float alpha[2] = {-1.0f, 0.0f}; + float Ap[] = { 0.159f, -0.13f }; + float X[] = { 0.854f, 0.851f }; + int incX = -1; + float Y[] = { 0.526f, -0.267f }; + int incY = -1; + float Ap_expected[] = { -0.284974f, 0.0f }; + cblas_chpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], flteps, "chpr2(case 1461) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], flteps, "chpr2(case 1461) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1462) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1462) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1463) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1463) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1464) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1464) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + double alpha[2] = {-0.3, 0.1}; + double Ap[] = { 0.772, 0.997 }; + double X[] = { -0.173, -0.839 }; + int incX = -1; + double Y[] = { 0.941, -0.422 }; + int incY = -1; + double Ap_expected[] = { 0.829742, 0.0 }; + cblas_zhpr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Ap[2*i], Ap_expected[2*i], dbleps, "zhpr2(case 1465) real"); + gsl_test_rel(Ap[2*i+1], Ap_expected[2*i+1], dbleps, "zhpr2(case 1465) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_nrm2.c b/gsl-1.9/cblas/test_nrm2.c new file mode 100644 index 0000000..5c777f6 --- /dev/null +++ b/gsl-1.9/cblas/test_nrm2.c @@ -0,0 +1,143 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_nrm2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.317f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 28)"); + }; + + + { + int N = 1; + double X[] = { 0.071 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 29)"); + }; + + + { + int N = 1; + float X[] = { 0.776f, 0.983f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 30)"); + }; + + + { + int N = 1; + double X[] = { 0.549, -0.354 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 31)"); + }; + + + { + int N = 2; + float X[] = { 0.14f, -0.632f }; + int incX = 1; + float expected = 0.647320631527f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 32)"); + }; + + + { + int N = 2; + double X[] = { 0.696, -0.804 }; + int incX = 1; + double expected = 1.06340584915; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 33)"); + }; + + + { + int N = 2; + float X[] = { 0.281f, -0.063f, 0.367f, 0.232f }; + int incX = 1; + float expected = 0.521001919382f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 34)"); + }; + + + { + int N = 2; + double X[] = { -0.359, -0.76, -0.906, -0.108 }; + int incX = 1; + double expected = 1.24055672986; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 35)"); + }; + + + { + int N = 2; + float X[] = { 0.918f, -0.126f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_snrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "snrm2(case 36)"); + }; + + + { + int N = 2; + double X[] = { 0.217, -0.588 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dnrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dnrm2(case 37)"); + }; + + + { + int N = 2; + float X[] = { 0.31f, 0.059f, -0.442f, 0.987f }; + int incX = -1; + float expected = 0.0f; + float f; + f = cblas_scnrm2(N, X, incX); + gsl_test_rel(f, expected, flteps, "scnrm2(case 38)"); + }; + + + { + int N = 2; + double X[] = { 0.609, 0.615, -0.143, -0.957 }; + int incX = -1; + double expected = 0; + double f; + f = cblas_dznrm2(N, X, incX); + gsl_test_rel(f, expected, dbleps, "dznrm2(case 39)"); + }; + + +} diff --git a/gsl-1.9/cblas/test_rot.c b/gsl-1.9/cblas/test_rot.c new file mode 100644 index 0000000..d2d6ed3 --- /dev/null +++ b/gsl-1.9/cblas/test_rot.c @@ -0,0 +1,635 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_rot (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 558)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 559)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { -0.474932f }; + float y_expected[] = { -0.194606f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 560)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 561)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.406f }; + float y_expected[] = { -0.314f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 562)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 563)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.314f }; + int incX = 1; + float Y[] = { -0.406f }; + int incY = -1; + float x_expected[] = { 0.314f }; + float y_expected[] = { 0.406f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 564)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 565)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 566)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 567)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { -0.433950524066 }; + double y_expected[] = { 0.234375644347 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 568)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 569)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.014 }; + double y_expected[] = { -0.493 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 570)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 571)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.493 }; + int incX = 1; + double Y[] = { -0.014 }; + int incY = -1; + double x_expected[] = { 0.493 }; + double y_expected[] = { 0.014 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 572)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 573)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 574)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 575)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { -0.955249f }; + float y_expected[] = { -0.038539f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 576)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 577)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.511f }; + float y_expected[] = { -0.808f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 578)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 579)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.808f }; + int incX = -1; + float Y[] = { -0.511f }; + int incY = 1; + float x_expected[] = { 0.808f }; + float y_expected[] = { 0.511f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 580)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 581)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 582)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 583)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { -0.234920471066 }; + double y_expected[] = { -0.0548941916244 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 584)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 585)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.165 }; + double y_expected[] = { -0.176 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 586)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 587)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.176 }; + int incX = -1; + double Y[] = { -0.165 }; + int incY = 1; + double x_expected[] = { 0.176 }; + double y_expected[] = { 0.165 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 588)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 589)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = 0.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { 0.0f }; + float y_expected[] = { 0.0f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 590)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 591)"); + } + }; + }; + + + { + int N = 1; + float c = 0.866025403784f; + float s = 0.5f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { -0.130571f }; + float y_expected[] = { 0.175844f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 592)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 593)"); + } + }; + }; + + + { + int N = 1; + float c = 0.0f; + float s = -1.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { -0.087f }; + float y_expected[] = { -0.201f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 594)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 595)"); + } + }; + }; + + + { + int N = 1; + float c = -1.0f; + float s = 0.0f; + float X[] = { -0.201f }; + int incX = -1; + float Y[] = { 0.087f }; + int incY = -1; + float x_expected[] = { 0.201f }; + float y_expected[] = { -0.087f }; + cblas_srot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srot(case 596)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srot(case 597)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = 0; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { 0.0 }; + double y_expected[] = { 0.0 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 598)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 599)"); + } + }; + }; + + + { + int N = 1; + double c = 0.866025403784; + double s = 0.5; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { -0.051835787356 }; + double y_expected[] = { 0.838217782649 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 600)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 601)"); + } + }; + }; + + + { + int N = 1; + double c = 0; + double s = -1; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { -0.7 }; + double y_expected[] = { -0.464 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 602)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 603)"); + } + }; + }; + + + { + int N = 1; + double c = -1; + double s = 0; + double X[] = { -0.464 }; + int incX = -1; + double Y[] = { 0.7 }; + int incY = -1; + double x_expected[] = { 0.464 }; + double y_expected[] = { -0.7 }; + cblas_drot(N, X, incX, Y, incY, c, s); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drot(case 604)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drot(case 605)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_rotg.c b/gsl-1.9/cblas/test_rotg.c new file mode 100644 index 0000000..a5a84d3 --- /dev/null +++ b/gsl-1.9/cblas/test_rotg.c @@ -0,0 +1,1677 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_rotg (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + float a = -1.5f; + float b = -1.5f; + float c; + float s; + float r_expected = -2.12132034356f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 166)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 167)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 168)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 169)"); + }; + + + { + float a = -1.5f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = 0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = 0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 170)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 171)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 172)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 173)"); + }; + + + { + float a = -1.5f; + float b = -0.1f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = 0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = 0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 174)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 175)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 176)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 177)"); + }; + + + { + float a = -1.5f; + float b = 0.0f; + float c; + float s; + float r_expected = -1.5f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 178)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 179)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 180)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 181)"); + }; + + + { + float a = -1.5f; + float b = 0.1f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = -0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = -0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 182)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 183)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 184)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 185)"); + }; + + + { + float a = -1.5f; + float b = 1.0f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = -0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = -0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 186)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 187)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 188)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 189)"); + }; + + + { + float a = -1.5f; + float b = 1.5f; + float c; + float s; + float r_expected = 2.12132034356f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 190)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 191)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 192)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 193)"); + }; + + + { + float a = -1.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = 1.80277563773f; + float c_expected = 0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 194)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 195)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 196)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 197)"); + }; + + + { + float a = -1.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.41421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 198)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 199)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 200)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 201)"); + }; + + + { + float a = -1.0f; + float b = -0.1f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = 0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = 0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 202)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 203)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 204)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 205)"); + }; + + + { + float a = -1.0f; + float b = 0.0f; + float c; + float s; + float r_expected = -1.0f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 206)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 207)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 208)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 209)"); + }; + + + { + float a = -1.0f; + float b = 0.1f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = -0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = -0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 210)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 211)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 212)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 213)"); + }; + + + { + float a = -1.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.41421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 214)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 215)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 216)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 217)"); + }; + + + { + float a = -1.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = -1.80277563773f; + float c_expected = -0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 218)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 219)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 220)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 221)"); + }; + + + { + float a = -0.1f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = 15.0332963784f; + float c_expected = 0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 222)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 223)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 224)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 225)"); + }; + + + { + float a = -0.1f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = 10.0498756211f; + float c_expected = 0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 226)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 227)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 228)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 229)"); + }; + + + { + float a = -0.1f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.141421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 230)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 231)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 232)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 233)"); + }; + + + { + float a = -0.1f; + float b = 0.0f; + float c; + float s; + float r_expected = -0.1f; + float z_expected = -0.0f; + float c_expected = 1.0f; + float s_expected = -0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 234)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 235)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 236)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 237)"); + }; + + + { + float a = -0.1f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.141421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 238)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 239)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 240)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 241)"); + }; + + + { + float a = -0.1f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = -10.0498756211f; + float c_expected = -0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 242)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 243)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 244)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 245)"); + }; + + + { + float a = -0.1f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = -15.0332963784f; + float c_expected = -0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 246)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 247)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 248)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 249)"); + }; + + + { + float a = 0.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.5f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 250)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 251)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 252)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 253)"); + }; + + + { + float a = 0.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.0f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 254)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 255)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 256)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 257)"); + }; + + + { + float a = 0.0f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.1f; + float z_expected = 1.0f; + float c_expected = -0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 258)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 259)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 260)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 261)"); + }; + + + { + float a = 0.0f; + float b = 0.0f; + float c; + float s; + float r_expected = 0.0f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 262)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 263)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 264)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 265)"); + }; + + + { + float a = 0.0f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.1f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 266)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 267)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 268)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 269)"); + }; + + + { + float a = 0.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.0f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 270)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 271)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 272)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 273)"); + }; + + + { + float a = 0.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.5f; + float z_expected = 1.0f; + float c_expected = 0.0f; + float s_expected = 1.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 274)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 275)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 276)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 277)"); + }; + + + { + float a = 0.1f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.50332963784f; + float z_expected = -15.0332963784f; + float c_expected = -0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 278)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 279)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 280)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 281)"); + }; + + + { + float a = 0.1f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.00498756211f; + float z_expected = -10.0498756211f; + float c_expected = -0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 282)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 283)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 284)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 285)"); + }; + + + { + float a = 0.1f; + float b = -0.1f; + float c; + float s; + float r_expected = -0.141421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 286)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 287)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 288)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 289)"); + }; + + + { + float a = 0.1f; + float b = 0.0f; + float c; + float s; + float r_expected = 0.1f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 290)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 291)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 292)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 293)"); + }; + + + { + float a = 0.1f; + float b = 0.1f; + float c; + float s; + float r_expected = 0.141421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 294)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 295)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 296)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 297)"); + }; + + + { + float a = 0.1f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = 10.0498756211f; + float c_expected = 0.099503719021f; + float s_expected = 0.99503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 298)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 299)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 300)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 301)"); + }; + + + { + float a = 0.1f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = 15.0332963784f; + float c_expected = 0.0665190105238f; + float s_expected = 0.997785157857f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 302)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 303)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 304)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 305)"); + }; + + + { + float a = 1.0f; + float b = -1.5f; + float c; + float s; + float r_expected = -1.80277563773f; + float z_expected = -1.80277563773f; + float c_expected = -0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 306)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 307)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 308)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 309)"); + }; + + + { + float a = 1.0f; + float b = -1.0f; + float c; + float s; + float r_expected = -1.41421356237f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 310)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 311)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 312)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 313)"); + }; + + + { + float a = 1.0f; + float b = -0.1f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = -0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = -0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 314)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 315)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 316)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 317)"); + }; + + + { + float a = 1.0f; + float b = 0.0f; + float c; + float s; + float r_expected = 1.0f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 318)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 319)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 320)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 321)"); + }; + + + { + float a = 1.0f; + float b = 0.1f; + float c; + float s; + float r_expected = 1.00498756211f; + float z_expected = 0.099503719021f; + float c_expected = 0.99503719021f; + float s_expected = 0.099503719021f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 322)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 323)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 324)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 325)"); + }; + + + { + float a = 1.0f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.41421356237f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 326)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 327)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 328)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 329)"); + }; + + + { + float a = 1.0f; + float b = 1.5f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = 1.80277563773f; + float c_expected = 0.554700196225f; + float s_expected = 0.832050294338f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 330)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 331)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 332)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 333)"); + }; + + + { + float a = 1.5f; + float b = -1.5f; + float c; + float s; + float r_expected = -2.12132034356f; + float z_expected = -1.41421356237f; + float c_expected = -0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 334)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 335)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 336)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 337)"); + }; + + + { + float a = 1.5f; + float b = -1.0f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = -0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = -0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 338)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 339)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 340)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 341)"); + }; + + + { + float a = 1.5f; + float b = -0.1f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = -0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = -0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 342)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 343)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 344)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 345)"); + }; + + + { + float a = 1.5f; + float b = 0.0f; + float c; + float s; + float r_expected = 1.5f; + float z_expected = 0.0f; + float c_expected = 1.0f; + float s_expected = 0.0f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 346)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 347)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 348)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 349)"); + }; + + + { + float a = 1.5f; + float b = 0.1f; + float c; + float s; + float r_expected = 1.50332963784f; + float z_expected = 0.0665190105238f; + float c_expected = 0.997785157857f; + float s_expected = 0.0665190105238f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 350)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 351)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 352)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 353)"); + }; + + + { + float a = 1.5f; + float b = 1.0f; + float c; + float s; + float r_expected = 1.80277563773f; + float z_expected = 0.554700196225f; + float c_expected = 0.832050294338f; + float s_expected = 0.554700196225f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 354)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 355)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 356)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 357)"); + }; + + + { + float a = 1.5f; + float b = 1.5f; + float c; + float s; + float r_expected = 2.12132034356f; + float z_expected = 1.41421356237f; + float c_expected = 0.707106781187f; + float s_expected = 0.707106781187f; + cblas_srotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, flteps, "srotg(case 358)"); + gsl_test_rel(b, z_expected, flteps, "srotg(case 359)"); + gsl_test_rel(c, c_expected, flteps, "srotg(case 360)"); + gsl_test_rel(s, s_expected, flteps, "srotg(case 361)"); + }; + + + { + double a = -1.5; + double b = -1.5; + double c; + double s; + double r_expected = -2.12132034356; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 362)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 363)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 364)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 365)"); + }; + + + { + double a = -1.5; + double b = -1; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = 0.554700196225; + double c_expected = 0.832050294338; + double s_expected = 0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 366)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 367)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 368)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 369)"); + }; + + + { + double a = -1.5; + double b = -0.1; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = 0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = 0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 370)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 371)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 372)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 373)"); + }; + + + { + double a = -1.5; + double b = 0; + double c; + double s; + double r_expected = -1.5; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 374)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 375)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 376)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 377)"); + }; + + + { + double a = -1.5; + double b = 0.1; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = -0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = -0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 378)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 379)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 380)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 381)"); + }; + + + { + double a = -1.5; + double b = 1; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = -0.554700196225; + double c_expected = 0.832050294338; + double s_expected = -0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 382)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 383)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 384)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 385)"); + }; + + + { + double a = -1.5; + double b = 1.5; + double c; + double s; + double r_expected = 2.12132034356; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 386)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 387)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 388)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 389)"); + }; + + + { + double a = -1; + double b = -1.5; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = 1.80277563773; + double c_expected = 0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 390)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 391)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 392)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 393)"); + }; + + + { + double a = -1; + double b = -1; + double c; + double s; + double r_expected = -1.41421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 394)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 395)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 396)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 397)"); + }; + + + { + double a = -1; + double b = -0.1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = 0.099503719021; + double c_expected = 0.99503719021; + double s_expected = 0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 398)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 399)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 400)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 401)"); + }; + + + { + double a = -1; + double b = 0; + double c; + double s; + double r_expected = -1; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 402)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 403)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 404)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 405)"); + }; + + + { + double a = -1; + double b = 0.1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = -0.099503719021; + double c_expected = 0.99503719021; + double s_expected = -0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 406)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 407)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 408)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 409)"); + }; + + + { + double a = -1; + double b = 1; + double c; + double s; + double r_expected = 1.41421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 410)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 411)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 412)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 413)"); + }; + + + { + double a = -1; + double b = 1.5; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = -1.80277563773; + double c_expected = -0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 414)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 415)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 416)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 417)"); + }; + + + { + double a = -0.1; + double b = -1.5; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = 15.0332963784; + double c_expected = 0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 418)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 419)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 420)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 421)"); + }; + + + { + double a = -0.1; + double b = -1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = 10.0498756211; + double c_expected = 0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 422)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 423)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 424)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 425)"); + }; + + + { + double a = -0.1; + double b = -0.1; + double c; + double s; + double r_expected = -0.141421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 426)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 427)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 428)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 429)"); + }; + + + { + double a = -0.1; + double b = 0; + double c; + double s; + double r_expected = -0.1; + double z_expected = -0; + double c_expected = 1; + double s_expected = -0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 430)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 431)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 432)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 433)"); + }; + + + { + double a = -0.1; + double b = 0.1; + double c; + double s; + double r_expected = 0.141421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 434)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 435)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 436)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 437)"); + }; + + + { + double a = -0.1; + double b = 1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = -10.0498756211; + double c_expected = -0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 438)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 439)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 440)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 441)"); + }; + + + { + double a = -0.1; + double b = 1.5; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = -15.0332963784; + double c_expected = -0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 442)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 443)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 444)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 445)"); + }; + + + { + double a = 0; + double b = -1.5; + double c; + double s; + double r_expected = -1.5; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 446)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 447)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 448)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 449)"); + }; + + + { + double a = 0; + double b = -1; + double c; + double s; + double r_expected = -1; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 450)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 451)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 452)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 453)"); + }; + + + { + double a = 0; + double b = -0.1; + double c; + double s; + double r_expected = -0.1; + double z_expected = 1; + double c_expected = -0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 454)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 455)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 456)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 457)"); + }; + + + { + double a = 0; + double b = 0; + double c; + double s; + double r_expected = 0; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 458)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 459)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 460)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 461)"); + }; + + + { + double a = 0; + double b = 0.1; + double c; + double s; + double r_expected = 0.1; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 462)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 463)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 464)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 465)"); + }; + + + { + double a = 0; + double b = 1; + double c; + double s; + double r_expected = 1; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 466)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 467)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 468)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 469)"); + }; + + + { + double a = 0; + double b = 1.5; + double c; + double s; + double r_expected = 1.5; + double z_expected = 1; + double c_expected = 0; + double s_expected = 1; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 470)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 471)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 472)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 473)"); + }; + + + { + double a = 0.1; + double b = -1.5; + double c; + double s; + double r_expected = -1.50332963784; + double z_expected = -15.0332963784; + double c_expected = -0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 474)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 475)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 476)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 477)"); + }; + + + { + double a = 0.1; + double b = -1; + double c; + double s; + double r_expected = -1.00498756211; + double z_expected = -10.0498756211; + double c_expected = -0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 478)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 479)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 480)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 481)"); + }; + + + { + double a = 0.1; + double b = -0.1; + double c; + double s; + double r_expected = -0.141421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 482)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 483)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 484)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 485)"); + }; + + + { + double a = 0.1; + double b = 0; + double c; + double s; + double r_expected = 0.1; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 486)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 487)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 488)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 489)"); + }; + + + { + double a = 0.1; + double b = 0.1; + double c; + double s; + double r_expected = 0.141421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 490)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 491)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 492)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 493)"); + }; + + + { + double a = 0.1; + double b = 1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = 10.0498756211; + double c_expected = 0.099503719021; + double s_expected = 0.99503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 494)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 495)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 496)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 497)"); + }; + + + { + double a = 0.1; + double b = 1.5; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = 15.0332963784; + double c_expected = 0.0665190105238; + double s_expected = 0.997785157857; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 498)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 499)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 500)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 501)"); + }; + + + { + double a = 1; + double b = -1.5; + double c; + double s; + double r_expected = -1.80277563773; + double z_expected = -1.80277563773; + double c_expected = -0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 502)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 503)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 504)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 505)"); + }; + + + { + double a = 1; + double b = -1; + double c; + double s; + double r_expected = -1.41421356237; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 506)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 507)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 508)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 509)"); + }; + + + { + double a = 1; + double b = -0.1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = -0.099503719021; + double c_expected = 0.99503719021; + double s_expected = -0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 510)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 511)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 512)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 513)"); + }; + + + { + double a = 1; + double b = 0; + double c; + double s; + double r_expected = 1; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 514)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 515)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 516)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 517)"); + }; + + + { + double a = 1; + double b = 0.1; + double c; + double s; + double r_expected = 1.00498756211; + double z_expected = 0.099503719021; + double c_expected = 0.99503719021; + double s_expected = 0.099503719021; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 518)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 519)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 520)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 521)"); + }; + + + { + double a = 1; + double b = 1; + double c; + double s; + double r_expected = 1.41421356237; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 522)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 523)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 524)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 525)"); + }; + + + { + double a = 1; + double b = 1.5; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = 1.80277563773; + double c_expected = 0.554700196225; + double s_expected = 0.832050294338; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 526)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 527)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 528)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 529)"); + }; + + + { + double a = 1.5; + double b = -1.5; + double c; + double s; + double r_expected = -2.12132034356; + double z_expected = -1.41421356237; + double c_expected = -0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 530)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 531)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 532)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 533)"); + }; + + + { + double a = 1.5; + double b = -1; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = -0.554700196225; + double c_expected = 0.832050294338; + double s_expected = -0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 534)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 535)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 536)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 537)"); + }; + + + { + double a = 1.5; + double b = -0.1; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = -0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = -0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 538)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 539)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 540)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 541)"); + }; + + + { + double a = 1.5; + double b = 0; + double c; + double s; + double r_expected = 1.5; + double z_expected = 0; + double c_expected = 1; + double s_expected = 0; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 542)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 543)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 544)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 545)"); + }; + + + { + double a = 1.5; + double b = 0.1; + double c; + double s; + double r_expected = 1.50332963784; + double z_expected = 0.0665190105238; + double c_expected = 0.997785157857; + double s_expected = 0.0665190105238; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 546)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 547)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 548)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 549)"); + }; + + + { + double a = 1.5; + double b = 1; + double c; + double s; + double r_expected = 1.80277563773; + double z_expected = 0.554700196225; + double c_expected = 0.832050294338; + double s_expected = 0.554700196225; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 550)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 551)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 552)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 553)"); + }; + + + { + double a = 1.5; + double b = 1.5; + double c; + double s; + double r_expected = 2.12132034356; + double z_expected = 1.41421356237; + double c_expected = 0.707106781187; + double s_expected = 0.707106781187; + cblas_drotg(&a, &b, &c, &s); + gsl_test_rel(a, r_expected, dbleps, "drotg(case 554)"); + gsl_test_rel(b, z_expected, dbleps, "drotg(case 555)"); + gsl_test_rel(c, c_expected, dbleps, "drotg(case 556)"); + gsl_test_rel(s, s_expected, dbleps, "drotg(case 557)"); + }; + + +} diff --git a/gsl-1.9/cblas/test_rotm.c b/gsl-1.9/cblas/test_rotm.c new file mode 100644 index 0000000..98783c5 --- /dev/null +++ b/gsl-1.9/cblas/test_rotm.c @@ -0,0 +1,1511 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_rotm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float h[] = { -1.0f, -4.44982e+03f, -15.5826f, 7.091334e+04f, 2.95912e+04f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -3.956017e+04f }; + float y_expected[] = { -1.657054e+04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 654)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 655)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 15.9728f, 6.400638e+03f, 1.733082e-05f, 1.524511e-04f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.0340097f }; + float y_expected[] = { -218.182f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 656)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 657)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 5.688411e+04f, 5.914789e+03f, 0.00210473f, 0.0231019f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -1.93462e+03f }; + float y_expected[] = { 0.0210629f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 658)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 659)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -0.582083f, 0.00103161f, -3.429851e-05f, 7.411469e-05f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.034f }; + float y_expected[] = { -0.56f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 660)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 661)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 115.163f, -6.715448e+04f, -258.695f, -16.2552f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 140.954f }; + float y_expected[] = { 2.292355e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 662)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 663)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -3.314862e+03f, -442.976f, -214.586f, -25.9716f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 120.134f }; + float y_expected[] = { 14.5012f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 664)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 665)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -1.177304e+03f, -1.236662e-04f, -0.186585f, 1.15841f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 39.4683f }; + float y_expected[] = { -0.614711f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 666)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 667)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -88.9796f, 0.808226f, 1.106582e-05f, -0.00862288f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.034f }; + float y_expected[] = { -0.56f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 668)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 669)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, -0.00225865f, 8.338551e+04f, -1.98282f, -2.409905e-05f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { 1.11046f }; + float y_expected[] = { -2.835107e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 670)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 671)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 0.258779f, 74.2802f, 0.923299f, 4.847128e+03f }; + float X[] = { -0.034f }; + int incX = 1; + float Y[] = { -0.56f }; + int incY = -1; + float x_expected[] = { -0.551048f }; + float y_expected[] = { -3.08553f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 672)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 673)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -8.00850735044, 0.0204647351647, 1.898461360078e-04, -4.32701487194 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -6.72728115497 }; + double y_expected[] = { 3.09369795149 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 674)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 675)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 1.230610998905e+04, 210.056650134, 9.20757074452, 2.072879691524e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -5.70658279935 }; + double y_expected[] = { 175.736586112 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 676)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 677)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -1.244580625511e+03, 1.11154682624, 2.269384716089e-05, -0.0143785338883 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -1.046158725429e+03 }; + double y_expected[] = { -0.829776862405 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 678)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 679)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 293.927527276, -2.614737743134e+03, 10.3164975867, -7.947030813329e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.84 }; + double y_expected[] = { -0.711 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 680)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 681)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0178609251786, 0.00983044958941, 105.944529127, 1.687350579234e-05 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -75.3415633866 }; + double y_expected[] = { 0.00824558059248 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 682)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 683)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 6.241999071283e-05, 2.495425882445e+03, 304.604891146, 1.604644714854e+04 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -215.734077605 }; + double y_expected[] = { 2.095446741254e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 684)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 685)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -0.058097639487, 8.386083625428e+03, -10.5233229994, 184.653245391 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { -0.759802017169 }; + double y_expected[] = { -132.128457473 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 686)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 687)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, -92.8754629217, 1.467547244529e-04, -3.197881072301e-04, -1.89874629713 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.84 }; + double y_expected[] = { -0.711 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 688)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 689)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0961996230646, -2.248344186185e-05, -316.856396787, 1.663969157848e+03 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 225.204090432 }; + double y_expected[] = { -1.183082090116e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 690)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 691)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -201.862043128, 4.999906166451e-04, -0.0653365534487, 586.454083328 }; + double X[] = { 0.84 }; + int incX = 1; + double Y[] = { -0.711 }; + int incY = -1; + double x_expected[] = { 0.886454289502 }; + double y_expected[] = { -0.710580007882 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 692)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 693)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 162.86f, 1.379231e-04f, 9.67285f, 0.929218f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 106.173f }; + float y_expected[] = { 0.358765f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 694)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 695)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 537.387f, -21.6404f, -1.017074e+03f, -1.730546e-05f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -391.961f }; + float y_expected[] = { -13.2258f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 696)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 697)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -1.339977e-05f, 0.00522784f, 2.020352e-05f, -0.0654088f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.385992f }; + float y_expected[] = { -0.654248f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 698)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 699)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -50.922f, 31.5261f, -0.194913f, 0.206417f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.629f }; + float y_expected[] = { 0.386f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 700)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 701)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 1.15659f, 2.599832e+04f, 435.891f, 1.546671e+03f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 168.981f }; + float y_expected[] = { 1.694996e+04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 702)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 703)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 3.359889e-04f, -0.00134822f, -12.9136f, -5.655622e+04f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -4.35566f }; + float y_expected[] = { 0.385152f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 704)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 705)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 2.75119e-05f, 1.70314f, 18.4063f, 185.731f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.386017f }; + float y_expected[] = { 71.063f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 706)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 707)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -1.031009e-04f, -3.378602e+04f, 7.869358e-05f, 157.303f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 0.629f }; + float y_expected[] = { 0.386f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 708)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 709)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.00207419f, -89.9374f, -1.40414f, -25.1433f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { -0.540694f }; + float y_expected[] = { -66.276f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 710)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 711)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -4.972562e+04f, 3.65698e-05f, 632.116f, 0.195207f }; + float X[] = { 0.629f }; + int incX = -1; + float Y[] = { 0.386f }; + int incY = 1; + float x_expected[] = { 244.626f }; + float y_expected[] = { 0.386023f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 712)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 713)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 8.64768339859, -105.906731008, -347.053994991, -1.28802789909 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 218.021288159 }; + double y_expected[] = { 72.2119146942 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 714)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 715)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 0.926057152065, 3.315158944851e-04, -1.203638835886e+03, 0.00197484344868 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 775.673049147 }; + double y_expected[] = { -0.645223441713 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 716)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 717)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -9.404298701289e-05, -0.00380843381223, -0.0767212569647, -3.66628238398 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.644936615027 }; + double y_expected[] = { 3.03875213767 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 718)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 719)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 0.0900662226146, 0.00250500071094, 6.46624826995, -2.159443948633e-05 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.674 }; + double y_expected[] = { -0.645 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 720)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 721)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 8.011686652935e+03, -23.8989526115, -1.104879849207e+04, 0.108740065261 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 1.726598223305e+03 }; + double y_expected[] = { 16.0377567181 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 722)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 723)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 5.162681717012e-05, 48.059409562, -4.701209666609e+04, -6.80333644488e+04 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 3.032212834963e+04 }; + double y_expected[] = { -33.0370420448 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 724)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 725)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, -5.554806445579e-04, 5.101973060197e+04, -5.932040237374e+03, 3.91045757161 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.644625606046 }; + double y_expected[] = { -1.84824513369 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 726)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 727)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, -1.697234884626e-05, 101.466514367, 5.772202675851e+03, -6.884724590773e-04 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -0.674 }; + double y_expected[] = { -0.645 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 728)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 729)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0199779342753, 13.013123509, -17.8393347684, 0.129333249919 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { 11.5198360534 }; + double y_expected[] = { -8.85426519126 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 730)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 731)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -6.673799053773e+04, 587.759435538, 3.493966594965e+04, 2.098374142331e-05 }; + double X[] = { -0.674 }; + int incX = -1; + double Y[] = { -0.645 }; + int incY = 1; + double x_expected[] = { -2.253675853752e+04 }; + double y_expected[] = { -396.794859553 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 732)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 733)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.070033f, 0.034824f, -0.00740144f, -0.153474f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.00701131f }; + float y_expected[] = { 0.0119423f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 734)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 735)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 7.618016e-04f, -0.00396806f, -92.8408f, -0.0018571f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 9.4516f }; + float y_expected[] = { -0.10256f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 736)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 737)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, -5.833806e+03f, 0.00265668f, -587.573f, 0.0972416f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 647.449f }; + float y_expected[] = { 0.100984f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 738)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 739)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, -8.93339e+04f, -5.16022e-05f, 2.589784e-05f, -7.52586f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111f }; + float y_expected[] = { -0.103f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 740)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 741)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, 0.125135f, 0.00586453f, 1.100694e-05f, -0.0137436f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.0138912f }; + float y_expected[] = { 7.64631e-04f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 742)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 743)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, -0.0996414f, 0.00505806f, 1.321441e-05f, 1.151406e-04f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111001f }; + float y_expected[] = { -0.103561f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 744)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 745)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 1.0f, 8.18165f, 169.902f, -1.453316e-05f, 1.539957e+03f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -1.01116f }; + float y_expected[] = { -158.505f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 746)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 747)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -2.0f, 1.827623e-04f, -0.0528808f, 24.7305f, 328.39f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.111f }; + float y_expected[] = { -0.103f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 748)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 749)"); + } + }; + }; + + + { + int N = 1; + float h[] = { -1.0f, -0.0876053f, 7.858704e+04f, -4.758389e+03f, -0.0114841f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { 490.124f }; + float y_expected[] = { -8.72316e+03f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 750)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 751)"); + } + }; + }; + + + { + int N = 1; + float h[] = { 0.0f, 0.00192188f, -1.031412e-05f, -0.00123957f, 0.312197f }; + float X[] = { -0.111f }; + int incX = -1; + float Y[] = { -0.103f }; + int incY = -1; + float x_expected[] = { -0.110872f }; + float y_expected[] = { -0.102999f }; + cblas_srotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "srotm(case 752)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "srotm(case 753)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.0253351881542, -0.105247702585, -7.18405641016, -5.409804811228e+04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.21037864911 }; + double y_expected[] = { 1.622920078085e+03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 754)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 755)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 8.503080247483e+03, -6.186691885896e-05, -0.201279925805, -5.810746179529e-05 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.209038397774 }; + double y_expected[] = { -0.0300125589845 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 756)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 757)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, 0.351101212426, 64.9574703355, 3.015315809025e-05, -5.291308403203e-04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.0412735461225 }; + double y_expected[] = { -0.202984126075 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 758)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 759)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 0.0220262018719, -0.00311338149392, -70.6413298654, 31.8952671416 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203 }; + double y_expected[] = { -0.03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 760)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 761)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, 1.549812806922e+04, -4.868519165134e+04, -5.230242596804e+04, 1.58043443456e+04 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 4.715192777093e+03 }; + double y_expected[] = { -1.035722423559e+04 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 762)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 763)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, -3.30917942895, -0.0100316602276, -0.0222191220411, -0.0881815578726 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203666573661 }; + double y_expected[] = { -0.0320364270262 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 764)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 765)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 1.0, 5.68327898035, 1.646867755046e-04, -0.106527931872, -28.2458905362 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 1.12370563301 }; + double y_expected[] = { 0.644376716086 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 766)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 767)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -2.0, 2.20585352008, 1.117638462348e+03, -0.116329468158, 0.00362096329059 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203 }; + double y_expected[] = { -0.03 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 768)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 769)"); + } + }; + }; + + + { + int N = 1; + double h[] = { -1.0, -0.00182683798892, -2.288460066516e-05, -37.55844708, -9.54075659826e-05 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 1.12638256429 }; + double y_expected[] = { -1.783346955549e-06 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 770)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 771)"); + } + }; + }; + + + { + int N = 1; + double h[] = { 0.0, 1.02690456955e-04, -20.1292302013, -1.703870486677e-04, 5.17477399477 }; + double X[] = { 0.203 }; + int incX = -1; + double Y[] = { -0.03 }; + int incY = -1; + double x_expected[] = { 0.203005111611 }; + double y_expected[] = { -4.11623373087 }; + cblas_drotm(N, X, incX, Y, incY, h); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "drotm(case 772)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "drotm(case 773)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_rotmg.c b/gsl-1.9/cblas/test_rotmg.c new file mode 100644 index 0000000..0a31250 --- /dev/null +++ b/gsl-1.9/cblas/test_rotmg.c @@ -0,0 +1,167 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_rotmg (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + float d1 = -1630.28519312f; + float d2 = 44320.1964703f; + float b1 = 1274.7681352f; + float b2 = 0.983006912864f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.0f; + float d2_expected = 0.0f; + float b1_expected = 0.0f; + float h0_expected = -1.0f; + float h11_expected = 0.0f; + float h21_expected = 0.0f; + float h12_expected = 0.0f; + float h22_expected = 0.0f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 606)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 607)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 608)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 609)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 610)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 611)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 612)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 613)"); + }; + + + { + double d1 = 0.0890831089656; + double d2 = 24998.3892082; + double b1 = 34657.8864443; + double b2 = 1.27708980357; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0.0890491788526; + double d2_expected = 24988.8677829; + double b1_expected = 34671.0920237; + double h0_expected = 0; + double h11_expected = -999.1; + double h21_expected = -3.6848461767e-05; + double h12_expected = 10.34036867; + double h22_expected = -999.4; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 614)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 615)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 616)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 617)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 618)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 619)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 620)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 621)"); + }; + + + { + float d1 = 0.00100326116366f; + float d2 = -1.20359225232f; + float b1 = -7.45489498808f; + float b2 = 0.159616854019f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00222932574734f; + float d2_expected = -2.67447728926f; + float b1_expected = -3.35491869218f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = 0.0214110130692f; + float h12_expected = 25.6863620142f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 622)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 623)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 624)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 625)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 626)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 627)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 628)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 629)"); + }; + + + { + double d1 = -49.1978123005; + double d2 = 0.228703451277; + double b1 = 1.8901039144; + double b2 = 7081.47754386; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 0; + double d2_expected = 0; + double b1_expected = 0; + double h0_expected = -1; + double h11_expected = 0; + double h21_expected = 0; + double h12_expected = 0; + double h22_expected = 0; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 630)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 631)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 632)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 633)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 634)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 635)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 636)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 637)"); + }; + + + { + float d1 = 0.00760694276009f; + float d2 = -1.07649167228f; + float b1 = -22584.0076391f; + float b2 = -0.00305597817159f; + float h[] = { -999.0f, -999.1f, -999.2f, -999.3f, -999.4f }; + float d1_expected = 0.00760694276011f; + float d2_expected = -1.07649167228f; + float b1_expected = -22584.007639f; + float h0_expected = 0.0f; + float h11_expected = -999.1f; + float h21_expected = -1.35316026298e-07f; + float h12_expected = -1.91491615001e-05f; + float h22_expected = -999.4f; + cblas_srotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, flteps, "srotmg(case 638)"); + gsl_test_rel(d2, d2_expected, flteps, "srotmg(case 639)"); + gsl_test_rel(b1, b1_expected, flteps, "srotmg(case 640)"); + gsl_test_rel(h[0], h0_expected, flteps, "srotmg(case 641)"); + gsl_test_rel(h[1], h11_expected, flteps, "srotmg(case 642)"); + gsl_test_rel(h[2], h21_expected, flteps, "srotmg(case 643)"); + gsl_test_rel(h[3], h12_expected, flteps, "srotmg(case 644)"); + gsl_test_rel(h[4], h22_expected, flteps, "srotmg(case 645)"); + }; + + + { + double d1 = 0.000283076346391; + double d2 = 20.1907649901; + double b1 = -0.274927034914; + double b2 = 18.6645358259; + double h[] = { -999.0, -999.1, -999.2, -999.3, -999.4 }; + double d1_expected = 20.1907649287; + double d2_expected = 0.00028307634553; + double b1_expected = 18.6645358827; + double h0_expected = 1; + double h11_expected = -2.06514743478e-07; + double h21_expected = -999.2; + double h12_expected = -999.3; + double h22_expected = -0.0147299154652; + cblas_drotmg(&d1, &d2, &b1, b2, h); + gsl_test_rel(d1, d1_expected, dbleps, "drotmg(case 646)"); + gsl_test_rel(d2, d2_expected, dbleps, "drotmg(case 647)"); + gsl_test_rel(b1, b1_expected, dbleps, "drotmg(case 648)"); + gsl_test_rel(h[0], h0_expected, dbleps, "drotmg(case 649)"); + gsl_test_rel(h[1], h11_expected, dbleps, "drotmg(case 650)"); + gsl_test_rel(h[2], h21_expected, dbleps, "drotmg(case 651)"); + gsl_test_rel(h[3], h12_expected, dbleps, "drotmg(case 652)"); + gsl_test_rel(h[4], h22_expected, dbleps, "drotmg(case 653)"); + }; + + +} diff --git a/gsl-1.9/cblas/test_sbmv.c b/gsl-1.9/cblas/test_sbmv.c new file mode 100644 index 0000000..a79fe22 --- /dev/null +++ b/gsl-1.9/cblas/test_sbmv.c @@ -0,0 +1,395 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_sbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1102)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1103)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1104)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1105)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1106)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { 0.187592f, -0.01232f, -0.040176f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1107)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1108)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = 0.0f; + int N = 3; + int k = 1; + int lda = 3; + float A[] = { 0.627f, -0.312f, 0.031f, 0.308f, 0.323f, -0.578f, 0.797f, 0.545f, -0.476f }; + float X[] = { -0.542f, 0.606f, 0.727f }; + int incX = -1; + float Y[] = { 0.755f, 0.268f, -0.99f }; + int incY = -1; + float y_expected[] = { -0.236236f, -0.215242f, 0.266757f }; + cblas_ssbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssbmv(case 1109)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1110)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1111)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1112)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1113)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1114)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1115)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1116)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = 1; + int N = 3; + int k = 1; + int lda = 3; + double A[] = { 0.83, -0.568, -0.888, 0.281, -0.779, -0.148, 0.138, 0.053, -0.757 }; + double X[] = { 0.166, 0.808, 0.723 }; + int incX = -1; + double Y[] = { 0.9, 0.99, -0.578 }; + int incY = -1; + double y_expected[] = { 0.9, 0.99, -0.578 }; + cblas_dsbmv(order, uplo, N, k, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsbmv(case 1117)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_scal.c b/gsl-1.9/cblas/test_scal.c new file mode 100644 index 0000000..a7cdd4b --- /dev/null +++ b/gsl-1.9/cblas/test_scal.c @@ -0,0 +1,911 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_scal (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float alpha = 0.0f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 112)"); + } + }; + }; + + + { + int N = 1; + float alpha = 0.1f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 113)"); + } + }; + }; + + + { + int N = 1; + float alpha = 1.0f; + float X[] = { 0.651f }; + int incX = -1; + float expected[] = { 0.651f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 114)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 115)"); + } + }; + }; + + + { + int N = 1; + double alpha = 0.1; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 116)"); + } + }; + }; + + + { + int N = 1; + double alpha = 1; + double X[] = { 0.686 }; + int incX = -1; + double expected[] = { 0.686 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 117)"); + } + }; + }; + + + { + int N = 1; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 118) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 118) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 119) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 119) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 120) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 120) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 121) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 121) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 122) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 122) imag"); + }; + }; + }; + + + { + int N = 1; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { 0.986f, -0.775f }; + int incX = -1; + float expected[] = { 0.986f, -0.775f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 123) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 123) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 124) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 124) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0.1, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 125) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 125) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {1, 0}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 126) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 126) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0, 0.1}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 127) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 127) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {0.1, 0.2}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 128) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 128) imag"); + }; + }; + }; + + + { + int N = 1; + double alpha[2] = {1, 0.3}; + double X[] = { 0.454, -0.478 }; + int incX = -1; + double expected[] = { 0.454, -0.478 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 129) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 129) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha = 0.0f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.0f, -0.0f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 130)"); + } + }; + }; + + + { + int N = 2; + float alpha = 0.1f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.0389f, -0.0236f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 131)"); + } + }; + }; + + + { + int N = 2; + float alpha = 1.0f; + float X[] = { 0.389f, -0.236f }; + int incX = 1; + float expected[] = { 0.389f, -0.236f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 132)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.0, -0.0 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 133)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0.1; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.0429, -0.0183 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 134)"); + } + }; + }; + + + { + int N = 2; + double alpha = 1; + double X[] = { -0.429, -0.183 }; + int incX = 1; + double expected[] = { -0.429, -0.183 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 135)"); + } + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0f, 0.0f, 0.0f, 0.0f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 136) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 136) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0603f, 0.0239f, 0.0339f, -0.058f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 137) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 137) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 138) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 138) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.0239f, -0.0603f, 0.058f, 0.0339f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 139) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 139) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.1081f, -0.0967f, 0.1499f, 0.0098f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 140) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 140) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { -0.603f, 0.239f, 0.339f, -0.58f }; + int incX = 1; + float expected[] = { -0.6747f, 0.0581f, 0.513f, -0.4783f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 141) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 141) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0, 0.0, 0.0, 0.0 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 142) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 142) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0956, 0.0613, 0.0443, 0.0503 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 143) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 143) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.956, 0.613, 0.443, 0.503 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 144) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 144) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0.1}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.0613, -0.0956, -0.0503, 0.0443 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 145) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 145) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0.2}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -0.2182, -0.1299, -0.0563, 0.1389 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 146) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 146) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0.3}; + double X[] = { -0.956, 0.613, 0.443, 0.503 }; + int incX = 1; + double expected[] = { -1.1399, 0.3262, 0.2921, 0.6359 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 147) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 147) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha = 0.0f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 148)"); + } + }; + }; + + + { + int N = 2; + float alpha = 0.1f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 149)"); + } + }; + }; + + + { + int N = 2; + float alpha = 1.0f; + float X[] = { 0.629f, -0.419f }; + int incX = -1; + float expected[] = { 0.629f, -0.419f }; + cblas_sscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], flteps, "sscal(case 150)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 151)"); + } + }; + }; + + + { + int N = 2; + double alpha = 0.1; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 152)"); + } + }; + }; + + + { + int N = 2; + double alpha = 1; + double X[] = { 0.398, -0.656 }; + int incX = -1; + double expected[] = { 0.398, -0.656 }; + cblas_dscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 153)"); + } + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 154) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 154) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 155) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 155) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.0f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 156) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 156) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.0f, 0.1f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 157) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 157) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {0.1f, 0.2f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 158) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 158) imag"); + }; + }; + }; + + + { + int N = 2; + float alpha[2] = {1.0f, 0.3f}; + float X[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + int incX = -1; + float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f }; + cblas_cscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 159) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 159) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 160) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 160) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 161) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 161) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 162) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 162) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0, 0.1}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 163) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 163) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {0.1, 0.2}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 164) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 164) imag"); + }; + }; + }; + + + { + int N = 2; + double alpha[2] = {1, 0.3}; + double X[] = { 0.521, -0.811, 0.556, -0.147 }; + int incX = -1; + double expected[] = { 0.521, -0.811, 0.556, -0.147 }; + cblas_zscal(N, alpha, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 165) real"); + gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 165) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_spmv.c b/gsl-1.9/cblas/test_spmv.c new file mode 100644 index 0000000..d49b48b --- /dev/null +++ b/gsl-1.9/cblas/test_spmv.c @@ -0,0 +1,363 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_spmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1134)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1135)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1136)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1137)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1138)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1139)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1140)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 0.1f; + float beta = -0.3f; + int N = 2; + float A[] = { -0.174f, 0.878f, 0.478f }; + float X[] = { 0.503f, 0.313f }; + int incX = -1; + float Y[] = { -0.565f, -0.109f }; + int incY = -1; + float y_expected[] = { 0.221025f, 0.0714172f }; + cblas_sspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "sspmv(case 1141)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1142)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1143)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1144)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1145)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1146)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1147)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1148)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = -1; + double beta = 0.1; + int N = 2; + double A[] = { -0.181, -0.071, -0.038 }; + double X[] = { -0.015, 0.132 }; + int incX = -1; + double Y[] = { -0.449, -0.219 }; + int incY = -1; + double y_expected[] = { -0.036098, 9.27e-04 }; + cblas_dspmv(order, uplo, N, alpha, A, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dspmv(case 1149)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_spr.c b/gsl-1.9/cblas/test_spr.c new file mode 100644 index 0000000..36891bd --- /dev/null +++ b/gsl-1.9/cblas/test_spr.c @@ -0,0 +1,163 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_spr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1426)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1427)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1428)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = -0.3f; + float Ap[] = { -0.764f, -0.257f, -0.064f }; + float X[] = { 0.455f, -0.285f }; + int incX = -1; + float Ap_expected[] = { -0.788367f, -0.218097f, -0.126108f }; + cblas_sspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr(case 1429)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1430)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1431)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1432)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = -1; + double Ap[] = { 0.819, 0.175, -0.809 }; + double X[] = { -0.645, -0.222 }; + int incX = -1; + double Ap_expected[] = { 0.769716, 0.03181, -1.225025 }; + cblas_dspr(order, uplo, N, alpha, X, incX, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr(case 1433)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_spr2.c b/gsl-1.9/cblas/test_spr2.c new file mode 100644 index 0000000..cf0c39b --- /dev/null +++ b/gsl-1.9/cblas/test_spr2.c @@ -0,0 +1,179 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_spr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1442)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1443)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1444)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + float alpha = -1.0f; + float Ap[] = { 0.493f, -0.175f, -0.831f }; + float X[] = { -0.163f, 0.489f }; + int incX = -1; + float Y[] = { 0.154f, 0.769f }; + int incY = -1; + float Ap_expected[] = { -0.259082f, -0.124959f, -0.780796f }; + cblas_sspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], flteps, "sspr2(case 1445)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1446)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1447)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1448)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 2; + double alpha = 0; + double Ap[] = { 0.938, 0.342, 0.74 }; + double X[] = { 0.216, -0.566 }; + int incX = -1; + double Y[] = { -0.845, 0.282 }; + int incY = -1; + double Ap_expected[] = { 0.938, 0.342, 0.74 }; + cblas_dspr2(order, uplo, N, alpha, X, incX, Y, incY, Ap); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(Ap[i], Ap_expected[i], dbleps, "dspr2(case 1449)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_swap.c b/gsl-1.9/cblas/test_swap.c new file mode 100644 index 0000000..accf822 --- /dev/null +++ b/gsl-1.9/cblas/test_swap.c @@ -0,0 +1,311 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_swap (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int N = 1; + float X[] = { 0.539f }; + int incX = 1; + float Y[] = { -0.262f }; + int incY = -1; + float expected1[] = { -0.262f }; + float expected2[] = { 0.539f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 88)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 89)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.906 }; + int incX = 1; + double Y[] = { 0.373 }; + int incY = -1; + double expected1[] = { 0.373 }; + double expected2[] = { 0.906 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 90)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 91)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.316f, -0.529f }; + int incX = 1; + float Y[] = { -0.313f, 0.363f }; + int incY = -1; + float expected1[] = { -0.313f, 0.363f }; + float expected2[] = { -0.316f, -0.529f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 92) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 92) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 93) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 93) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { 0.512, -0.89 }; + int incX = 1; + double Y[] = { -0.225, -0.511 }; + int incY = -1; + double expected1[] = { -0.225, -0.511 }; + double expected2[] = { 0.512, -0.89 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 94) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 94) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 95) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 95) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { 0.336f }; + int incX = -1; + float Y[] = { -0.431f }; + int incY = 1; + float expected1[] = { -0.431f }; + float expected2[] = { 0.336f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 96)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 97)"); + } + }; + }; + + + { + int N = 1; + double X[] = { 0.764 }; + int incX = -1; + double Y[] = { -0.293 }; + int incY = 1; + double expected1[] = { -0.293 }; + double expected2[] = { 0.764 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 98)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 99)"); + } + }; + }; + + + { + int N = 1; + float X[] = { -0.239f, 0.361f }; + int incX = -1; + float Y[] = { 0.149f, 0.347f }; + int incY = 1; + float expected1[] = { 0.149f, 0.347f }; + float expected2[] = { -0.239f, 0.361f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 100) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 100) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 101) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 101) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.171, -0.936 }; + int incX = -1; + double Y[] = { 0.495, -0.835 }; + int incY = 1; + double expected1[] = { 0.495, -0.835 }; + double expected2[] = { -0.171, -0.936 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 102) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 102) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 103) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 103) imag"); + }; + }; + }; + + + { + int N = 1; + float X[] = { -0.405f }; + int incX = -1; + float Y[] = { -0.213f }; + int incY = -1; + float expected1[] = { -0.213f }; + float expected2[] = { -0.405f }; + cblas_sswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], flteps, "sswap(case 104)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], flteps, "sswap(case 105)"); + } + }; + }; + + + { + int N = 1; + double X[] = { -0.761 }; + int incX = -1; + double Y[] = { -0.585 }; + int incY = -1; + double expected1[] = { -0.585 }; + double expected2[] = { -0.761 }; + cblas_dswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], expected1[i], dbleps, "dswap(case 106)"); + } + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], expected2[i], dbleps, "dswap(case 107)"); + } + }; + }; + + + { + int N = 1; + float X[] = { 0.853f, 0.146f }; + int incX = -1; + float Y[] = { 0.009f, -0.178f }; + int incY = -1; + float expected1[] = { 0.009f, -0.178f }; + float expected2[] = { 0.853f, 0.146f }; + cblas_cswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], flteps, "cswap(case 108) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], flteps, "cswap(case 108) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], flteps, "cswap(case 109) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], flteps, "cswap(case 109) imag"); + }; + }; + }; + + + { + int N = 1; + double X[] = { -0.228, 0.386 }; + int incX = -1; + double Y[] = { 0.988, -0.084 }; + int incY = -1; + double expected1[] = { 0.988, -0.084 }; + double expected2[] = { -0.228, 0.386 }; + cblas_zswap(N, X, incX, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], expected1[2*i], dbleps, "zswap(case 110) real"); + gsl_test_rel(X[2*i+1], expected1[2*i+1], dbleps, "zswap(case 110) imag"); + }; + }; + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[2*i], expected2[2*i], dbleps, "zswap(case 111) real"); + gsl_test_rel(Y[2*i+1], expected2[2*i+1], dbleps, "zswap(case 111) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_symm.c b/gsl-1.9/cblas/test_symm.c new file mode 100644 index 0000000..88a672a --- /dev/null +++ b/gsl-1.9/cblas/test_symm.c @@ -0,0 +1,827 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_symm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { -0.581f }; + int lda = 1; + float B[] = { 0.157f, 0.451f }; + int ldb = 2; + float C[] = { -0.869f, -0.871f }; + int ldc = 2; + float C_expected[] = { 0.896365f, 0.949609f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1518)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { 0.874f }; + int lda = 1; + float B[] = { 0.085f, 0.069f }; + int ldb = 1; + float C[] = { -0.495f, -0.828f }; + int ldc = 1; + float C_expected[] = { 0.472713f, 0.809908f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1519)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -1.0f; + float beta = 0.0f; + float A[] = { -0.671f, -0.343f, 0.6f, 0.177f }; + int lda = 2; + float B[] = { 0.043f, 0.01f }; + int ldb = 2; + float C[] = { 0.988f, 0.478f }; + int ldc = 2; + float C_expected[] = { 0.032283f, 0.012979f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1520)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha = -1.0f; + float beta = 0.0f; + float A[] = { 0.069f, 0.096f, 0.139f, -0.044f }; + int lda = 2; + float B[] = { -0.448f, 0.07f }; + int ldb = 1; + float C[] = { 0.361f, 0.995f }; + int ldc = 1; + float C_expected[] = { 0.021182f, 0.065352f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1521)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = 0.0f; + float beta = -0.3f; + float A[] = { 0.745f }; + int lda = 1; + float B[] = { -0.269f, 0.448f }; + int ldb = 2; + float C[] = { -0.986f, 0.2f }; + int ldc = 2; + float C_expected[] = { 0.2958f, -0.06f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1522)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = 0.0f; + float beta = -0.3f; + float A[] = { 0.96f }; + int lda = 1; + float B[] = { 0.392f, -0.07f }; + int ldb = 1; + float C[] = { -0.235f, 0.554f }; + int ldc = 1; + float C_expected[] = { 0.0705f, -0.1662f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1523)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { -0.839f, 0.498f, -0.215f, -0.314f }; + int lda = 2; + float B[] = { -0.66f, 0.593f }; + int ldb = 2; + float C[] = { -0.806f, 0.525f }; + int ldc = 2; + float C_expected[] = { -0.208474f, 0.0657906f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1524)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha = -0.3f; + float beta = 0.1f; + float A[] = { 0.994f, -0.117f, -0.639f, 0.925f }; + int lda = 2; + float B[] = { -0.478f, 0.147f }; + int ldb = 1; + float C[] = { -0.814f, 0.316f }; + int ldc = 1; + float C_expected[] = { 0.0662993f, -0.0259703f }; + cblas_ssymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssymm(case 1525)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.981 }; + int lda = 1; + double B[] = { -0.823, 0.83 }; + int ldb = 2; + double C[] = { 0.991, 0.382 }; + int ldc = 2; + double C_expected[] = { 0.7487911, 0.626269 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1526)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.248 }; + int lda = 1; + double B[] = { 0.74, 0.068 }; + int ldb = 1; + double C[] = { -0.905, 0.742 }; + int ldc = 1; + double C_expected[] = { -0.849944, 0.7470592 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1527)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { 0.591, -0.01, -0.192, -0.376 }; + int lda = 2; + double B[] = { 0.561, 0.946 }; + int ldb = 2; + double C[] = { 0.763, 0.189 }; + int ldc = 2; + double C_expected[] = { 0.440909, 0.550306 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1528)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { -0.786, 0.87, 0.222, -0.043 }; + int lda = 2; + double B[] = { -0.503, -0.526 }; + int ldb = 1; + double C[] = { -0.027, -0.391 }; + int ldc = 1; + double C_expected[] = { -0.305586, -0.301952 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1529)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = 0.1; + double beta = 0.1; + double A[] = { -0.468 }; + int lda = 1; + double B[] = { -0.881, 0.692 }; + int ldb = 2; + double C[] = { -0.812, -0.395 }; + int ldc = 2; + double C_expected[] = { -0.0399692, -0.0718856 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1530)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = 0.1; + double beta = 0.1; + double A[] = { 0.849 }; + int lda = 1; + double B[] = { -0.887, 0.518 }; + int ldb = 1; + double C[] = { 0.414, -0.251 }; + int ldc = 1; + double C_expected[] = { -0.0339063, 0.0188782 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1531)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { 0.457, 0.624, 0.807, 0.349 }; + int lda = 2; + double B[] = { -0.609, 0.03 }; + int ldb = 2; + double C[] = { 0.719, -0.624 }; + int ldc = 2; + double C_expected[] = { 0.973103, -0.143007 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1532)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha = -1; + double beta = 1; + double A[] = { -0.133, -0.117, -0.163, 0.795 }; + int lda = 2; + double B[] = { -0.882, 0.549 }; + int ldb = 1; + double C[] = { 0.715, -0.327 }; + int ldc = 1; + double C_expected[] = { 0.661927, -0.866649 }; + cblas_dsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsymm(case 1533)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.476f, 0.816f }; + int lda = 1; + float B[] = { 0.282f, 0.852f, -0.891f, -0.588f }; + int ldb = 2; + float C[] = { 0.9f, 0.486f, -0.78f, -0.637f }; + int ldc = 2; + float C_expected[] = { 1.461f, -0.149664f, -0.835692f, 0.369944f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1534) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1534) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {1.0f, 0.0f}; + float A[] = { 0.048f, 0.172f }; + int lda = 1; + float B[] = { 0.786f, 0.783f, 0.809f, -0.569f }; + int ldb = 1; + float C[] = { -0.227f, -0.215f, 0.881f, 0.233f }; + int ldc = 1; + float C_expected[] = { -0.130052f, -0.387776f, 0.7443f, 0.121164f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1535) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1535) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.495f, -0.012f, 0.843f, -0.986f, -0.243f, 0.833f, 0.921f, 0.004f }; + int lda = 2; + float B[] = { 0.876f, 0.612f, 0.805f, -0.57f }; + int ldb = 2; + float C[] = { 0.938f, -0.24f, -0.874f, -0.062f }; + int ldc = 2; + float C_expected[] = { 1.82769f, 0.628319f, 0.93157f, 1.21158f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1536) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1536) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { -0.812f, 0.83f, 0.705f, 0.15f, -0.463f, 0.901f, -0.547f, -0.483f }; + int lda = 2; + float B[] = { -0.808f, -0.664f, 0.352f, -0.102f }; + int ldb = 1; + float C[] = { -0.64f, 0.399f, 0.896f, -0.163f }; + int ldc = 1; + float C_expected[] = { -0.631906f, 0.496142f, 0.697798f, 1.62656f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1537) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1537) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.342f, -0.906f }; + int lda = 1; + float B[] = { 0.676f, 0.863f, -0.517f, -0.138f }; + int ldb = 2; + float C[] = { 0.274f, 0.388f, -0.271f, 0.205f }; + int ldc = 2; + float C_expected[] = { -1.40107f, 0.59131f, 0.096842f, -0.692206f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1538) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1538) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.418f, 0.354f }; + int lda = 1; + float B[] = { -0.74f, 0.018f, 0.395f, 0.248f }; + int ldb = 1; + float C[] = { -0.162f, 0.175f, -0.853f, 0.652f }; + int ldc = 1; + float C_expected[] = { 0.140692f, 0.092436f, -0.729318f, -1.09649f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1539) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1539) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.12f, 0.496f, 0.313f, -0.136f, 0.987f, 0.532f, 0.58f, -0.687f }; + int lda = 2; + float B[] = { -0.587f, 0.278f, 0.857f, 0.136f }; + int ldb = 2; + float C[] = { 0.162f, 0.249f, -0.665f, 0.456f }; + int ldc = 2; + float C_expected[] = { -0.22769f, -0.0269913f, 0.0502096f, 0.0841558f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1540) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1540) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + float alpha[2] = {-0.3f, 0.1f}; + float beta[2] = {0.0f, 0.1f}; + float A[] = { 0.579f, -0.859f, 0.192f, -0.737f, 0.396f, -0.498f, 0.751f, -0.379f }; + int lda = 2; + float B[] = { 0.84f, -0.755f, -0.019f, -0.063f }; + int ldb = 1; + float C[] = { 0.04f, 0.639f, -0.876f, -0.778f }; + int ldc = 1; + float C_expected[] = { 0.115459f, 0.329813f, 0.288206f, 0.110315f }; + cblas_csymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csymm(case 1541) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csymm(case 1541) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.511, -0.486 }; + int lda = 1; + double B[] = { 0.985, -0.923, -0.234, -0.756 }; + int ldb = 2; + double C[] = { -0.16, 0.049, 0.618, -0.349 }; + int ldc = 2; + double C_expected[] = { 0.0, 0.0, 0.0, 0.0 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1542) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1542) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {0, 0}; + double beta[2] = {0, 0}; + double A[] = { 0.46, -0.816 }; + int lda = 1; + double B[] = { 0.404, 0.113, -0.904, -0.627 }; + int ldb = 1; + double C[] = { 0.114, 0.318, 0.636, -0.839 }; + int ldc = 1; + double C_expected[] = { 0.0, 0.0, 0.0, 0.0 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1543) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1543) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.835, 0.344, 0.975, 0.634, 0.312, -0.659, -0.624, -0.175 }; + int lda = 2; + double B[] = { -0.707, -0.846, 0.825, -0.661 }; + int ldb = 2; + double C[] = { 0.352, -0.499, 0.267, 0.548 }; + int ldc = 2; + double C_expected[] = { -2.160518, -0.156877, 0.648536, 0.867299 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1544) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1544) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int M = 1; + int N = 2; + double alpha[2] = {-1, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.409, 0.013, -0.308, -0.317, -0.535, -0.697, -0.385, 0.119 }; + int lda = 2; + double B[] = { 0.299, -0.233, 0.093, 0.664 }; + int ldb = 1; + double C[] = { 0.699, 0.47, -0.347, -0.182 }; + int ldc = 1; + double C_expected[] = { -0.550491, 0.249777, 0.559487, 0.348221 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1545) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1545) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + double A[] = { -0.151, 0.635 }; + int lda = 1; + double B[] = { 0.711, -0.869, 0.153, 0.647 }; + int ldb = 2; + double C[] = { -0.299, 0.43, -0.307, 0.133 }; + int ldc = 2; + double C_expected[] = { 0.014454, 0.283704, -0.566948, -0.307542 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1546) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1546) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 1}; + double A[] = { 0.793, -0.543 }; + int lda = 1; + double B[] = { 0.054, -0.045, 0.989, 0.453 }; + int ldb = 1; + double C[] = { 0.443, -0.641, -0.809, -0.83 }; + int ldc = 1; + double C_expected[] = { 0.659387, 0.377993, 1.860256, -0.986798 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1547) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1547) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.432, -0.293, -0.819, 0.44, -0.818, -0.258, -0.836, 0.683 }; + int lda = 2; + double B[] = { -0.259, -0.878, 0.161, 0.744 }; + int ldb = 2; + double C[] = { 0.436, -0.655, -0.61, -0.875 }; + int ldc = 2; + double C_expected[] = { -0.521112, 0.460053, -0.04741, 1.148005 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1548) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1548) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int M = 1; + int N = 2; + double alpha[2] = {1, 0}; + double beta[2] = {-1, 0}; + double A[] = { -0.656, 0.378, -0.688, 0.676, 0.967, -0.804, 0.455, -0.425 }; + int lda = 2; + double B[] = { 0.791, -0.947, -0.945, -0.444 }; + int ldb = 1; + double C[] = { 0.014, -0.814, -0.091, -0.417 }; + int ldc = 1; + double C_expected[] = { 0.775374, 1.400882, -0.431711, 1.802857 }; + cblas_zsymm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsymm(case 1549) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsymm(case 1549) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_symv.c b/gsl-1.9/cblas/test_symv.c new file mode 100644 index 0000000..923a0f5 --- /dev/null +++ b/gsl-1.9/cblas/test_symv.c @@ -0,0 +1,379 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_symv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1054)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1055)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1056)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1057)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1058)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1059)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1060)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + float alpha = 1.0f; + float beta = -1.0f; + int N = 1; + int lda = 1; + float A[] = { -0.428f }; + float X[] = { -0.34f }; + int incX = -1; + float Y[] = { -0.888f }; + int incY = -1; + float y_expected[] = { 1.03352f }; + cblas_ssymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], flteps, "ssymv(case 1061)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1062)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1063)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1064)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1065)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1066)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1067)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1068)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + double alpha = 0; + double beta = -0.3; + int N = 1; + int lda = 1; + double A[] = { 0.544 }; + double X[] = { -0.601 }; + int incX = -1; + double Y[] = { -0.852 }; + int incY = -1; + double y_expected[] = { 0.2556 }; + cblas_dsymv(order, uplo, N, alpha, A, lda, X, incX, beta, Y, incY); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(Y[i], y_expected[i], dbleps, "dsymv(case 1069)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_syr.c b/gsl-1.9/cblas/test_syr.c new file mode 100644 index 0000000..fc7b397 --- /dev/null +++ b/gsl-1.9/cblas/test_syr.c @@ -0,0 +1,171 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_syr (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1402)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1403)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1404)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.1f; + float A[] = { -0.291f }; + float X[] = { 0.845f }; + int incX = -1; + float A_expected[] = { -0.219597f }; + cblas_ssyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr(case 1405)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1406)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1407)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1408)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = -0.3; + double A[] = { -0.65 }; + double X[] = { -0.891 }; + int incX = -1; + double A_expected[] = { -0.8881643 }; + cblas_dsyr(order, uplo, N, alpha, X, incX, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr(case 1409)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_syr2.c b/gsl-1.9/cblas/test_syr2.c new file mode 100644 index 0000000..5f214f1 --- /dev/null +++ b/gsl-1.9/cblas/test_syr2.c @@ -0,0 +1,187 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_syr2 (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1434)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1435)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1436)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + float alpha = 0.0f; + float A[] = { 0.862f }; + float X[] = { 0.823f }; + int incX = -1; + float Y[] = { 0.699f }; + int incY = -1; + float A_expected[] = { 0.862f }; + cblas_ssyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], flteps, "ssyr2(case 1437)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1438)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1439)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1440)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int N = 1; + int lda = 1; + double alpha = 0; + double A[] = { -0.824 }; + double X[] = { 0.684 }; + int incX = -1; + double Y[] = { 0.965 }; + int incY = -1; + double A_expected[] = { -0.824 }; + cblas_dsyr2(order, uplo, N, alpha, X, incX, Y, incY, A, lda); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(A[i], A_expected[i], dbleps, "dsyr2(case 1441)"); + } + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_syr2k.c b/gsl-1.9/cblas/test_syr2k.c new file mode 100644 index 0000000..8955d0e --- /dev/null +++ b/gsl-1.9/cblas/test_syr2k.c @@ -0,0 +1,827 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_syr2k (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.915f, 0.445f }; + int lda = 2; + float B[] = { 0.213f, -0.194f }; + int ldb = 2; + float C[] = { -0.117f }; + int ldc = 1; + float C_expected[] = { -0.173245f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1614)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { 0.089f, -0.889f }; + int lda = 2; + float B[] = { -0.384f, 0.518f }; + int ldb = 2; + float C[] = { 0.069f }; + int ldc = 1; + float C_expected[] = { -0.0299356f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1615)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { 0.492f, 0.021f }; + int lda = 1; + float B[] = { -0.804f, -0.912f }; + int ldb = 1; + float C[] = { -0.851f }; + int ldc = 1; + float C_expected[] = { -0.933944f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1616)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha = 0.1f; + float beta = 1.0f; + float A[] = { -0.376f, 0.689f }; + int lda = 1; + float B[] = { 0.21f, 0.406f }; + int ldb = 1; + float C[] = { -0.581f }; + int ldc = 1; + float C_expected[] = { -0.540845f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1617)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.629f, -0.883f }; + int lda = 1; + float B[] = { -0.165f, 0.02f }; + int ldb = 1; + float C[] = { 0.236f }; + int ldc = 1; + float C_expected[] = { -0.31369f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1618)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.412f, -0.411f }; + int lda = 1; + float B[] = { 0.313f, 0.301f }; + int ldb = 1; + float C[] = { 0.222f }; + int ldc = 1; + float C_expected[] = { -0.05611f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1619)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { -0.02f, 0.593f }; + int lda = 2; + float B[] = { -0.144f, 0.846f }; + int ldb = 2; + float C[] = { -0.645f }; + int ldc = 1; + float C_expected[] = { 1.20262f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1620)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha = 1.0f; + float beta = -0.3f; + float A[] = { 0.253f, 0.937f }; + int lda = 2; + float B[] = { 0.24f, -0.27f }; + int ldb = 2; + float C[] = { 0.128f }; + int ldc = 1; + float C_expected[] = { -0.42294f }; + cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1621)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.225, 0.857 }; + int lda = 2; + double B[] = { -0.933, 0.994 }; + int ldb = 2; + double C[] = { 0.177 }; + int ldc = 1; + double C_expected[] = { 0.2123566 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1622)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.955, 0.112 }; + int lda = 2; + double B[] = { -0.695, 0.719 }; + int ldb = 2; + double C[] = { 0.069 }; + int ldc = 1; + double C_expected[] = { 0.1488506 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1623)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { 0.216, 0.911 }; + int lda = 1; + double B[] = { -0.074, -0.256 }; + int ldb = 1; + double C[] = { -0.621 }; + int ldc = 1; + double C_expected[] = { -0.04984 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1624)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha = 0.1; + double beta = 0; + double A[] = { -0.343, -0.381 }; + int lda = 1; + double B[] = { -0.433, -0.087 }; + int ldb = 1; + double C[] = { -0.889 }; + int ldc = 1; + double C_expected[] = { 0.0363332 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1625)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { -0.633, 0.219 }; + int lda = 1; + double B[] = { 0.817, -0.683 }; + int ldb = 1; + double C[] = { -0.294 }; + int ldc = 1; + double C_expected[] = { -1.039476 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1626)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { -0.887, -0.43 }; + int lda = 1; + double B[] = { 0.557, 0.912 }; + int ldb = 1; + double C[] = { 0.831 }; + int ldc = 1; + double C_expected[] = { -2.603438 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1627)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { 0.397, -0.173 }; + int lda = 2; + double B[] = { 0.155, -0.99 }; + int ldb = 2; + double C[] = { 0.621 }; + int ldc = 1; + double C_expected[] = { -0.15539 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1628)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha = 1; + double beta = -1; + double A[] = { 0.833, -0.52 }; + int lda = 2; + double B[] = { 0.28, 0.481 }; + int ldb = 2; + double C[] = { 0.455 }; + int ldc = 1; + double C_expected[] = { -0.48876 }; + cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1629)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.248f, -0.037f, -0.124f, 0.998f }; + int lda = 2; + float B[] = { -0.608f, -0.115f, -0.718f, -0.551f }; + int ldb = 2; + float C[] = { 0.187f, -0.329f }; + int ldc = 1; + float C_expected[] = { 0.119445f, 0.157092f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1630) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1630) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.068f, 0.751f, -0.449f, -0.598f }; + int lda = 2; + float B[] = { 0.616f, 0.805f, -0.635f, 0.773f }; + int ldb = 2; + float C[] = { -0.287f, 0.917f }; + int ldc = 1; + float C_expected[] = { -0.110002f, 0.0369404f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1631) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1631) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.396f, -0.603f, -0.131f, -0.288f }; + int lda = 1; + float B[] = { -0.64f, -0.444f, -0.085f, 0.936f }; + int ldb = 1; + float C[] = { 0.375f, -0.434f }; + int ldc = 1; + float C_expected[] = { -0.0927216f, 0.0532822f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1632) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1632) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.655f, 0.16f, 0.45f, -0.747f }; + int lda = 1; + float B[] = { 0.923f, 0.432f, -0.986f, 0.259f }; + int ldb = 1; + float C[] = { 0.752f, 0.576f }; + int ldc = 1; + float C_expected[] = { -0.256746f, 0.0570436f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1633) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1633) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.765f, 0.487f, 0.7f, 0.768f }; + int lda = 1; + float B[] = { -0.529f, 0.056f, -0.584f, 0.928f }; + int ldb = 1; + float C[] = { -0.426f, 0.836f }; + int ldc = 1; + float C_expected[] = { 0.019875f, -0.148818f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1634) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1634) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { 0.25f, 0.489f, 0.8f, -0.642f }; + int lda = 1; + float B[] = { -0.732f, -0.856f, -0.654f, 0.591f }; + int ldb = 1; + float C[] = { -0.101f, 0.322f }; + int ldc = 1; + float C_expected[] = { -0.064144f, 0.0183612f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1635) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1635) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.579f, -0.971f, 0.521f, -0.824f }; + int lda = 2; + float B[] = { -0.227f, 0.907f, 0.457f, -0.274f }; + int ldb = 2; + float C[] = { 0.21f, -0.718f }; + int ldc = 1; + float C_expected[] = { 0.164812f, 0.20489f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1636) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1636) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + float alpha[2] = {0.0f, 0.1f}; + float beta[2] = {0.0f, 0.0f}; + float A[] = { -0.83f, -0.512f, -0.667f, -0.436f }; + int lda = 2; + float B[] = { -0.443f, 0.82f, -0.259f, -0.618f }; + int ldb = 2; + float C[] = { 0.583f, 0.668f }; + int ldc = 1; + float C_expected[] = { -0.0142692f, 0.138167f }; + cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1637) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1637) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.315, 0.03, 0.281, 0.175 }; + int lda = 2; + double B[] = { -0.832, -0.964, 0.291, 0.476 }; + int ldb = 2; + double C[] = { -0.341, 0.743 }; + int ldc = 1; + double C_expected[] = { 0.028, -0.257 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1638) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1638) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { -0.159, -0.489, -0.11, 0.611 }; + int lda = 2; + double B[] = { -0.285, -0.048, -0.673, -0.492 }; + int ldb = 2; + double C[] = { 0.496, -0.626 }; + int ldc = 1; + double C_expected[] = { -0.0862, 0.2374 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1639) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1639) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.796, 0.872, -0.919, 0.748 }; + int lda = 1; + double B[] = { -0.945, 0.915, -0.252, -0.276 }; + int ldb = 1; + double C[] = { 0.07, -0.957 }; + int ldc = 1; + double C_expected[] = { 0.0747, 0.2941 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1640) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1640) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 1; + int K = 2; + double alpha[2] = {0, 0}; + double beta[2] = {-0.3, 0.1}; + double A[] = { 0.984, 0.526, 0.284, 0.806 }; + int lda = 1; + double B[] = { -0.509, -0.178, 0.188, -0.221 }; + int ldb = 1; + double C[] = { -0.388, 0.795 }; + int ldc = 1; + double C_expected[] = { 0.0369, -0.2773 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1641) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1641) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.628, 0.846, -0.645, 0.032 }; + int lda = 1; + double B[] = { 0.545, -0.54, 0.493, -0.035 }; + int ldb = 1; + double C[] = { -0.16, -0.06 }; + int ldc = 1; + double C_expected[] = { 0.97047, 0.304602 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1642) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1642) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.556, -0.946, 0.177, -0.859 }; + int lda = 1; + double B[] = { 0.423, -0.91, 0.736, -0.251 }; + int ldb = 1; + double C[] = { -0.478, 0.519 }; + int ldc = 1; + double C_expected[] = { -2.41467, -1.189498 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1643) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1643) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { -0.582, 0.09, -0.176, 0.784 }; + int lda = 2; + double B[] = { 0.687, -0.859, 0.945, 0.756 }; + int ldb = 2; + double C[] = { -0.663, -0.186 }; + int ldc = 1; + double C_expected[] = { -2.144496, 2.272884 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1644) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1644) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 1; + int K = 2; + double alpha[2] = {1, 0}; + double beta[2] = {0, 0.1}; + double A[] = { 0.231, -0.452, -0.112, -0.837 }; + int lda = 2; + double B[] = { -0.258, 0.464, -0.224, 0.893 }; + int ldb = 2; + double C[] = { -0.448, 0.046 }; + int ldc = 1; + double C_expected[] = { 1.840718, 0.577744 }; + cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1645) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1645) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_syrk.c b/gsl-1.9/cblas/test_syrk.c new file mode 100644 index 0000000..21531d5 --- /dev/null +++ b/gsl-1.9/cblas/test_syrk.c @@ -0,0 +1,763 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_syrk (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -1.0f; + float beta = 0.1f; + float A[] = { 0.412f, -0.229f }; + int lda = 1; + float C[] = { 0.628f, -0.664f, -0.268f, 0.096f }; + int ldc = 2; + float C_expected[] = { -0.106944f, 0.027948f, -0.268f, -0.042841f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1566)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha = -1.0f; + float beta = 0.1f; + float A[] = { 0.101f, -0.653f }; + int lda = 2; + float C[] = { 0.432f, 0.107f, -0.952f, -0.532f }; + int ldc = 2; + float C_expected[] = { 0.032999f, 0.107f, -0.029247f, -0.479609f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1567)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { 0.79f, 0.595f }; + int lda = 2; + float C[] = { 0.257f, 0.183f, -0.021f, -0.053f }; + int ldc = 2; + float C_expected[] = { 0.6498f, 0.48835f, -0.021f, 0.348725f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1568)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha = 1.0f; + float beta = 0.1f; + float A[] = { -0.181f, -0.654f }; + int lda = 1; + float C[] = { -0.4f, 0.615f, 0.147f, -0.163f }; + int ldc = 2; + float C_expected[] = { -0.007239f, 0.615f, 0.133074f, 0.411416f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1569)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = -1.0f; + float A[] = { -0.191f, 0.584f }; + int lda = 1; + float C[] = { -0.719f, -0.681f, -0.003f, 0.544f }; + int ldc = 2; + float C_expected[] = { 0.719f, -0.681f, 0.003f, -0.544f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1570)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha = 0.0f; + float beta = -1.0f; + float A[] = { 0.788f, 0.041f }; + int lda = 2; + float C[] = { 0.029f, 0.365f, 0.739f, -0.769f }; + int ldc = 2; + float C_expected[] = { -0.029f, -0.365f, 0.739f, 0.769f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1571)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { 0.733f, 0.678f }; + int lda = 2; + float C[] = { -0.941f, 0.96f, 0.07f, -0.295f }; + int ldc = 2; + float C_expected[] = { 0.779813f, 0.96f, -0.219092f, 0.157095f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1572)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha = -0.3f; + float beta = -1.0f; + float A[] = { -0.87f, 0.675f }; + int lda = 1; + float C[] = { -0.602f, -0.432f, -0.984f, 0.384f }; + int ldc = 2; + float C_expected[] = { 0.37493f, 0.608175f, -0.984f, -0.520687f }; + cblas_ssyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], flteps, "ssyrk(case 1573)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = -0.3; + double A[] = { 0.169, -0.875 }; + int lda = 1; + double C[] = { 0.159, 0.277, 0.865, 0.346 }; + int ldc = 2; + double C_expected[] = { -0.0448439, -0.0978875, 0.865, -0.0272375 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1574)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 0.1; + double beta = -0.3; + double A[] = { 0.536, -0.725 }; + int lda = 2; + double C[] = { 0.154, -0.445, -0.841, -0.91 }; + int ldc = 2; + double C_expected[] = { -0.0174704, -0.445, 0.21344, 0.3255625 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1575)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -1; + double A[] = { -0.07, 0.8 }; + int lda = 2; + double C[] = { 0.823, -0.88, -0.136, 0.793 }; + int ldc = 2; + double C_expected[] = { -0.823, 0.88, -0.136, -0.793 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1576)"); + } + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha = 0; + double beta = -1; + double A[] = { -0.058, 0.649 }; + int lda = 1; + double C[] = { -0.187, 0.294, -0.004, -0.933 }; + int ldc = 2; + double C_expected[] = { 0.187, 0.294, 0.004, 0.933 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1577)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { 0.263, -0.289 }; + int lda = 1; + double C[] = { 0.554, -0.679, 0.993, 0.758 }; + int ldc = 2; + double C_expected[] = { -0.484831, -0.679, -1.069007, -0.674479 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1578)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha = 1; + double beta = -1; + double A[] = { -0.265, -0.837 }; + int lda = 2; + double C[] = { -0.994, 0.967, -0.34, -0.069 }; + int ldc = 2; + double C_expected[] = { 1.064225, -0.745195, -0.34, 0.769569 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1579)"); + } + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha = -0.3; + double beta = 1; + double A[] = { -0.464, 0.394 }; + int lda = 2; + double C[] = { -0.45, -0.447, 0.649, 0.055 }; + int ldc = 2; + double C_expected[] = { -0.5145888, -0.447, 0.7038448, 0.0084292 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1580)"); + } + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha = -0.3; + double beta = 1; + double A[] = { 0.815, 0.168 }; + int lda = 1; + double C[] = { 0.817, -0.957, -0.395, -0.382 }; + int ldc = 2; + double C_expected[] = { 0.6177325, -0.998076, -0.395, -0.3904672 }; + cblas_dsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[i], C_expected[i], dbleps, "dsyrk(case 1581)"); + } + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.447f, -0.507f, -0.425f, 0.701f }; + int lda = 1; + float C[] = { 0.16f, -0.245f, 0.922f, -0.437f, 0.24f, 0.008f, -0.095f, 0.749f }; + int ldc = 2; + float C_expected[] = { -0.0235f, 0.0895f, -0.2329f, 0.2233f, 0.24f, 0.008f, -0.0464f, -0.2342f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1582) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1582) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { -0.421f, -0.435f, -0.914f, -0.493f }; + int lda = 2; + float C[] = { -0.761f, -0.38f, 0.043f, -0.999f, 0.779f, 0.238f, 0.082f, 0.394f }; + int ldc = 2; + float C_expected[] = { 0.2663f, 0.0379f, 0.043f, -0.999f, -0.2575f, 0.0065f, -0.064f, -0.11f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1583) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1583) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.827f, -0.896f, 0.417f, 0.865f }; + int lda = 2; + float C[] = { -0.349f, -0.31f, 0.972f, 0.794f, -0.906f, -0.595f, -0.089f, -0.333f }; + int ldc = 2; + float C_expected[] = { 0.254587f, 1.54008f, -1.4909f, -0.482723f, -0.906f, -0.595f, 0.634336f, -0.63041f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1584) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1584) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {-1.0f, 0.0f}; + float beta[2] = {-0.3f, 0.1f}; + float A[] = { 0.607f, 0.747f, -0.889f, 0.333f }; + int lda = 1; + float C[] = { 0.244f, 0.564f, 0.009f, 0.578f, -0.827f, 0.558f, -0.337f, 0.731f }; + int ldc = 2; + float C_expected[] = { 0.05996f, -1.05166f, 0.009f, 0.578f, 0.980674f, 0.211852f, -0.651432f, 0.339074f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1585) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1585) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.784f, -0.281f, -0.88f, 0.479f }; + int lda = 1; + float C[] = { 0.491f, 0.531f, 0.805f, -0.097f, 0.728f, 0.674f, -0.705f, -0.754f }; + int ldc = 2; + float C_expected[] = { 0.004695f, 0.050392f, 0.805f, -0.097f, -1.22932f, 1.35082f, 1.29896f, -1.54804f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1586) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1586) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + float alpha[2] = {1.0f, 0.0f}; + float beta[2] = {0.0f, 1.0f}; + float A[] = { 0.272f, -0.146f, 0.155f, 0.038f }; + int lda = 2; + float C[] = { 0.533f, -0.41f, -0.904f, 0.301f, -0.836f, 0.57f, -0.374f, -0.293f }; + int ldc = 2; + float C_expected[] = { 0.462668f, 0.453576f, -0.253292f, -0.916294f, -0.836f, 0.57f, 0.315581f, -0.36222f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1587) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1587) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.055f, -0.127f, -0.896f, -0.625f }; + int lda = 2; + float C[] = { -0.619f, 0.511f, -0.877f, 0.557f, -0.801f, -0.437f, -0.922f, 0.332f }; + int ldc = 2; + float C_expected[] = { 0.60503f, -0.524104f, -0.877f, 0.557f, 0.652833f, 0.406905f, -0.198f, 0.080191f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1588) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1588) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + float alpha[2] = {0.0f, 1.0f}; + float beta[2] = {-1.0f, 0.0f}; + float A[] = { -0.528f, 0.759f, -0.079f, 0.952f }; + int lda = 1; + float C[] = { 0.775f, 0.855f, 0.786f, 0.525f, 0.85f, 0.044f, 0.658f, 0.947f }; + int ldc = 2; + float C_expected[] = { 0.026504f, -1.1523f, -0.223383f, -1.20586f, 0.85f, 0.044f, -0.507584f, -1.84706f }; + cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1589) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1589) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { -0.049, -0.687, -0.434, 0.294 }; + int lda = 1; + double C[] = { 0.937, -0.113, 0.796, 0.293, 0.876, -0.199, -0.757, -0.103 }; + int ldc = 2; + double C_expected[] = { 0.467432, -0.045674, 1.019244, 0.576752, 0.876, -0.199, -0.65508, -0.358192 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1590) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1590) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {1, 0}; + double beta[2] = {1, 0}; + double A[] = { 0.359, -0.364, 0.926, -0.69 }; + int lda = 2; + double C[] = { 0.306, 0.249, 0.28, 0.229, 0.866, 0.092, 0.886, -0.283 }; + int ldc = 2; + double C_expected[] = { 0.302385, -0.012352, 0.28, 0.229, 0.947274, -0.492774, 1.267376, -1.56088 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1591) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1591) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0}; + double A[] = { 0.607, 0.555, -0.85, 0.831 }; + int lda = 2; + double C[] = { 0.069, 0.368, 0.551, -0.912, -0.243, -0.063, -0.924, 0.192 }; + int ldc = 2; + double C_expected[] = { -0.0855042, -0.1960886, 0.2898798, -0.1075156, -0.243, -0.063, 0.1316883, 0.4270039 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1592) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1592) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 121; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {0, 0}; + double A[] = { 0.427, 0.86, -0.136, 0.002 }; + int lda = 1; + double C[] = { 0.398, -0.47, 0.011, -0.547, -0.106, 0.016, 0.681, 0.246 }; + int ldc = 2; + double C_expected[] = { 0.0937373, -0.2760591, 0.011, -0.547, 0.0295482, 0.0288526, -0.0054932, 0.0020124 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1593) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1593) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.718, 0.023, 0.355, -0.492 }; + int lda = 1; + double C[] = { -0.637, -0.727, -0.475, -0.776, 0.802, -0.55, -0.837, 0.222 }; + int ldc = 2; + double C_expected[] = { -0.7948013, -0.6854089, -0.475, -0.776, 0.7566473, -0.4198521, -0.7672563, 0.3151921 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1594) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1594) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 111; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { 0.209, 0.139, -0.202, -0.223 }; + int lda = 2; + double C[] = { -0.695, 0.524, 0.212, -0.88, -0.752, 0.291, 0.684, -0.124 }; + int ldc = 2; + double C_expected[] = { -0.7081182, 0.5090054, 0.2228348, -0.8587166, -0.752, 0.291, 0.6776683, -0.1519201 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1595) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1595) imag"); + }; + }; + }; + + + { + int order = 101; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.365, -0.624, 0.632, 0.348 }; + int lda = 2; + double C[] = { 0.877, 0.927, -0.377, 0.967, 0.008, 0.292, -0.779, 0.794 }; + int ldc = 2; + double C_expected[] = { 0.9082933, 0.7647289, -0.377, 0.967, 0.0641972, 0.4470636, -0.9064832, 0.6898704 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1596) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1596) imag"); + }; + }; + }; + + + { + int order = 102; + int uplo = 122; + int trans = 112; + int N = 2; + int K = 1; + double alpha[2] = {-0.3, 0.1}; + double beta[2] = {1, 0}; + double A[] = { -0.067, -0.586, 0.208, 0.331 }; + int lda = 1; + double C[] = { 0.584, -0.454, 0.93, 0.782, 0.489, -0.278, 0.081, -0.919 }; + int ldc = 2; + double C_expected[] = { 0.6778197, -0.5114479, 0.8903975, 0.8432225, 0.489, -0.278, 0.0871195, -0.9669385 }; + cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); + { + int i; + for (i = 0; i < 4; i++) { + gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1597) real"); + gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1597) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_tbmv.c b/gsl-1.9/cblas/test_tbmv.c new file mode 100644 index 0000000..abd349f --- /dev/null +++ b/gsl-1.9/cblas/test_tbmv.c @@ -0,0 +1,1819 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_tbmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.017088f, 0.315595f, 0.243875f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 894)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.089f, -0.721909f, 0.129992f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 895)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.156927f, -0.159004f, 0.098252f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 896)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.043096f, -0.584876f, -0.203f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 897)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { 0.024831f, -0.24504f, 0.447756f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 898)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.089f, -0.670912f, 0.146504f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 899)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.24504f, 0.447756f, -0.089117f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 900)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.439f, -0.484f, -0.952f, -0.508f, 0.381f, -0.889f, -0.192f, -0.279f, -0.155f }; + float X[] = { -0.089f, -0.688f, -0.203f }; + int incX = -1; + float x_expected[] = { -0.351128f, -0.589748f, -0.203f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 901)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.156047f, 0.189418f, -0.52828f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 902)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.194342f, -0.449858f, -0.562f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 903)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { -0.0046f, 0.156047f, 0.189418f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 904)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.023f, -0.516295f, -0.423724f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 905)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.328565f, 0.326454f, 0.051142f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 906)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.356165f, -0.345888f, -0.562f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 907)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { -0.015295f, 0.13041f, -0.482689f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 908)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.94f, -0.091f, 0.984f, -0.276f, -0.342f, -0.484f, -0.665f, -0.2f, 0.349f }; + float X[] = { 0.023f, -0.501f, -0.562f }; + int incX = -1; + float x_expected[] = { 0.023f, -0.508866f, -0.516409f }; + cblas_stbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbmv(case 909)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.50204, 0.563918, -0.590448 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 910)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.77, -0.95429, -0.44419 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 911)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 1.214016, -0.433258, 0.321835 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 912)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.236664, -1.106472, 0.337 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 913)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.68068, 0.357254, 1.022043 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 914)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.77, -0.31596, 1.037208 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 915)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { 0.357254, 1.022043, 0.190742 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 916)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.566, 0.955, -0.086, -0.856, 0.177, 0.974, -0.652, -0.884, 0.77 }; + double X[] = { -0.77, -0.818, 0.337 }; + int incX = -1; + double x_expected[] = { -0.914786, -0.496165, 0.337 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 917)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.610833, -0.293243, 0.02914 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 918)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.635031, 0.574, 0.155 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 919)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.024679, 0.610833, -0.293243 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 920)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.851, 0.875864, -0.231243 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 921)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.198505, 0.091504, 0.093 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 922)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -1.074184, 0.356535, 0.155 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 923)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { 0.394864, -0.768342, 0.31774 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 924)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.188, 0.6, -0.743, -0.803, 0.449, -0.681, -0.464, -0.029, 0.553 }; + double X[] = { -0.851, 0.481, 0.155 }; + int incX = -1; + double x_expected[] = { -0.851, 0.098901, 0.4436 }; + cblas_dtbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbmv(case 925)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.113114f, -0.051704f, -0.403567f, -0.288349f, -0.223936f, 0.841145f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 926) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 926) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.46f, 0.069f, -0.14027f, -0.23208f, -0.537722f, 0.841425f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 927) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 927) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.099689f, 0.487805f, 0.353793f, 0.325411f, -0.225658f, -0.776023f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 928) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 928) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.39057f, 0.113296f, 0.388863f, 0.131011f, -0.236f, 0.605f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 929) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 929) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.169119f, 0.443509f, 0.159816f, 0.139696f, -0.180955f, -0.835292f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 930) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 930) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.46f, 0.069f, 0.194886f, -0.054704f, -0.191297f, 0.545731f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 931) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 931) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { 0.159816f, 0.139696f, -0.180955f, -0.835292f, 0.077786f, 0.60472f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 932) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 932) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.824f, -0.45f, -0.987f, 0.758f, 0.42f, -0.357f, 0.147f, -0.191f, 0.88f, 0.63f, 0.155f, -0.573f, 0.224f, 0.146f, 0.501f, -0.889f, 0.456f, 0.796f }; + float X[] = { -0.46f, 0.069f, 0.308f, -0.003f, -0.236f, 0.605f }; + int incX = -1; + float x_expected[] = { -0.18707f, 0.2604f, 0.082342f, -0.779023f, -0.236f, 0.605f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 933) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 933) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.647885f, 0.621535f, -0.104407f, 0.05309f, 0.732704f, 0.055982f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 934) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 934) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 1.2955f, 0.190774f, -0.247934f, 0.982616f, -0.894f, -0.116f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 935) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 935) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.096482f, -0.071661f, 0.647885f, 0.621535f, -0.104407f, 0.05309f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 936) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 936) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.411f, -0.308f, -1.14861f, 0.933761f, -1.66247f, -0.234526f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 937) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 937) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.632361f, -0.409373f, 0.578489f, 0.012724f, 0.664066f, 0.171616f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 938) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 938) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.946879f, -0.645712f, -1.21801f, 0.32495f, -0.894f, -0.116f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 939) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 939) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { -0.236612f, 0.122761f, -1.12184f, -0.358823f, 1.4975f, -0.470595f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 940) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 940) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.814f, 0.043f, -0.755f, -0.094f, 0.876f, 0.257f, 0.406f, 0.491f, -0.27f, -0.787f, 0.545f, 0.732f, -0.512f, -0.085f, 0.234f, 0.001f, -0.225f, -0.002f }; + float X[] = { 0.411f, -0.308f, -0.912f, 0.811f, -0.894f, -0.116f }; + int incX = -1; + float x_expected[] = { 0.411f, -0.308f, -1.26537f, 0.570703f, -0.129206f, -0.642577f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 941) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 941) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.413357f, 0.178267f, -0.114618f, -1.35595f, -0.513288f, 0.611332f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 942) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 942) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.368428f, 0.071217f, -0.954366f, -0.390486f, 0.694f, -0.954f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 943) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 943) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -0.084786f, -0.059464f, 0.413357f, 0.178267f, -0.114618f, -1.35595f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 944) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 944) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.065f, -0.082f, -0.636071f, 0.80005f, 0.787748f, -1.14446f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 945) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 945) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -1.18498f, -0.424201f, 0.230196f, 0.374209f, -0.208366f, -1.16549f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 946) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 946) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { -1.03519f, -0.446737f, -0.819232f, 0.995992f, 0.694f, -0.954f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 947) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 947) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.109929f, 0.02505f, 0.062939f, -0.202464f, -0.470658f, 1.69006f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 948) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 948) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.675f, 0.047f, 0.695f, 0.724f, -0.438f, 0.991f, -0.188f, -0.06f, -0.093f, 0.302f, 0.842f, -0.753f, 0.465f, -0.972f, -0.058f, 0.988f, 0.093f, 0.164f }; + float X[] = { 0.065f, -0.082f, -0.746f, 0.775f, 0.694f, -0.954f }; + int incX = -1; + float x_expected[] = { 0.065f, -0.082f, -0.776809f, 0.762996f, 0.73663f, 0.124729f }; + cblas_ctbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbmv(case 949) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbmv(case 949) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.010019, -0.1678, -0.042017, -1.112094, 0.010004, -0.480427 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 950) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 950) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.064, 0.169, -0.80842, -0.715637, -0.829924, -0.212971 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 951) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 951) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.634014, 0.796937, -0.585538, -0.895375, -0.125887, 0.010019 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 952) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 952) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.567497, 1.085122, -1.217792, -1.322566, -0.641, -0.103 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 953) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 953) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.130517, -0.119185, -0.187765, -0.519609, -0.169484, -1.165438 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 954) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 954) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { 0.064, 0.169, -0.820019, -0.9468, -0.684597, -1.278457 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 955) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 955) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.187765, -0.519609, -0.169484, -1.165438, 0.198928, -0.370456 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 956) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 956) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.212, 0.612, 0.189, -0.046, -0.124, 0.82, 0.753, 0.727, 0.331, 0.116, 0.504, -0.673, -0.888, -0.277, -0.361, -0.909, 0.982, -0.124 }; + double X[] = { 0.064, 0.169, -0.81, -0.779, -0.641, -0.103 }; + int incX = -1; + double x_expected[] = { -0.113746, -0.182809, -0.935887, -0.768981, -0.641, -0.103 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 957) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 957) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { -0.436746, 0.963714, -1.087615, -0.018695, 0.30063, 0.12958 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 958) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 958) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.895682, 1.407174, 0.2408, -0.14282, -0.649, 0.188 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 959) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 959) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.785744, -0.3966, -0.436746, 0.963714, -1.087615, -0.018695 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 960) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 960) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.884, 0.636, 0.472572, 0.47454, -1.056415, 0.594125 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 961) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 961) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.464705, -0.108078, 0.094975, 0.376323, -0.6802, -0.42482 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 962) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 962) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.562961, 0.924522, 1.004293, -0.112851, -0.649, 0.188 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 963) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 963) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { -0.448428, 0.19254, -0.674583, 1.236189, 0.780774, 1.167088 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 964) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 964) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.374, -0.308, 0.792, 0.884, -0.794, -0.055, -0.281, 0.527, 0.246, 0.762, 0.853, 0.891, -0.231, 0.384, 0.373, -0.717, -0.957, -0.338 }; + double X[] = { 0.884, 0.636, 0.921, 0.282, -0.649, 0.188 }; + int incX = -1; + double x_expected[] = { 0.884, 0.636, 0.653832, 1.112064, -0.168856, 1.225508 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 965) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 965) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.59515, 0.077106, -0.27658, -0.637356, 0.407252, -0.308844 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 966) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 966) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.46131, 0.537642, 0.624614, 0.762252, 0.326, 0.428 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 967) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 967) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.536274, 0.421806, -0.59515, 0.077106, -0.27658, -0.637356 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 968) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 968) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.591, -0.084, 0.98216, 0.400464, 0.131806, -0.026608 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 969) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 969) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.68293, 0.796222, -0.96062, 0.415172, -0.082386, -0.182748 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 970) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 970) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -1.737656, 0.290416, 0.61669, 0.73853, 0.326, 0.428 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 971) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 971) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { 0.27516, -0.544536, -0.10627, -0.988374, 0.229991, -0.711267 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 972) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 972) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.002, 0.95, -0.363, 0.084, -0.646, 0.816, -0.407, 0.099, -0.02, -0.906, -0.874, 0.191, -0.328, -0.968, 0.79, 0.826, -0.795, 0.277 }; + double X[] = { -0.591, -0.084, 0.707, 0.945, 0.326, 0.428 }; + int incX = -1; + double x_expected[] = { -0.591, -0.084, 0.794924, 0.411234, 0.148739, 0.025577 }; + cblas_ztbmv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbmv(case 973) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbmv(case 973) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_tbsv.c b/gsl-1.9/cblas/test_tbsv.c new file mode 100644 index 0000000..2d9d290 --- /dev/null +++ b/gsl-1.9/cblas/test_tbsv.c @@ -0,0 +1,1819 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_tbsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.354651f, -2.40855f, 0.481076f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1230)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.305f, 0.84973f, -1.00859f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1231)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -2.71619f, -1.09055f, -3.97608f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1232)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.56589f, 0.303361f, -0.831f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1233)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { 1.30901f, -0.656172f, -5.13458f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1234)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.305f, 0.8723f, -0.509121f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1235)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { 0.524539f, -0.961964f, 1.22026f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1236)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.681f, 0.209f, 0.436f, -0.369f, 0.786f, -0.84f, 0.86f, -0.233f, 0.734f }; + float X[] = { -0.305f, 0.61f, -0.831f }; + int incX = -1; + float x_expected[] = { -0.920972f, 0.783679f, -0.831f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1237)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 16.8676f, 17.3503f, 5.27273f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1238)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.209676f, 0.54278f, 0.116f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1239)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.212077f, -5.01482f, -1.14722f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1240)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.144f, 0.615848f, 0.242249f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1241)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 1.28844f, -5.49514f, 0.145912f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1242)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.0563823f, 0.65878f, 0.116f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1243)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 1.08271f, -3.73662f, 140.301f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1244)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.022f, 0.795f, -0.389f, -0.205f, -0.121f, 0.323f, 0.133f, 0.679f, 0.742f }; + float X[] = { 0.144f, 0.635f, 0.116f }; + int incX = -1; + float x_expected[] = { 0.144f, 0.652424f, -0.402677f }; + cblas_stbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stbsv(case 1245)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.967930029155, 0.138412575592, 0.506166027443 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1246)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.332, 0.819736, 0.615143048 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1247)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.364842154056, -0.326531140246, -0.568848758465 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1248)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.588397988, 0.747516, 0.252 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1249)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { -0.550580431177, -0.571849444278, 0.248263427151 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1250)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.332, 0.701876, 0.696287508 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1251)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 1.50217883761, -1.21382140588, 0.407108239095 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1252)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.619, -0.443, 0.957, -0.633, -0.698, 0.783, -0.343, -0.603, 0.735 }; + double X[] = { 0.332, 0.588, 0.252 }; + int incX = -1; + double x_expected[] = { 0.820345928, 0.699636, 0.252 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1253)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 18.994209959, 20.323927329, 2.7135678392 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1254)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 1.06925836, 0.72162, -0.54 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1255)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { -3.27683615819, -4.47682615869, -1.97425326753 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1256)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.58, 0.11952, -0.53844624 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1257)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { -6.6461072986, -0.788837290809, -1.78217821782 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1258)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.16345912, 0.55098, -0.54 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1259)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.767195767196, -82.9352869353, -123.564783625 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1260)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.199, 0.303, -0.705, -0.013, -0.678, 0.547, 0.756, -0.177, -0.079 }; + double X[] = { 0.58, 0.558, -0.54 }; + int incX = -1; + double x_expected[] = { 0.58, 0.95124, -0.82822572 }; + cblas_dtbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtbsv(case 1261)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.28871f, 0.289887f, 1.76043f, 1.27481f, 1.56506f, -2.35181f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1262) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1262) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.11f, 0.787f, -1.04259f, 0.18935f, 0.228474f, -0.564917f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1263) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1263) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { -0.0906249f, 3.09442f, -1.60036f, 1.28475f, -0.582941f, 0.0383898f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1264) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1264) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.05233f, 0.79657f, -0.566883f, 1.46031f, -0.437f, 0.592f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1265) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1265) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { -0.735844f, 1.11782f, -0.28244f, 1.16117f, -0.66707f, 0.938302f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1266) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1266) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.11f, 0.787f, -0.406239f, 0.580226f, -0.171935f, 1.2125f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1267) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1267) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 1.70081f, 2.20477f, 1.32753f, -0.522112f, 0.0223652f, -0.62248f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1268) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1268) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { -0.975f, -0.667f, 0.813f, -0.962f, -0.961f, 0.226f, -0.503f, 0.809f, 0.81f, -0.162f, -0.027f, -0.044f, 0.212f, 0.563f, 0.446f, -0.392f, 0.798f, -0.07f }; + float X[] = { 0.11f, 0.787f, -0.826f, 0.809f, -0.437f, 0.592f }; + int incX = -1; + float x_expected[] = { 0.967596f, 0.693563f, -1.04022f, -0.09269f, -0.437f, 0.592f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1269) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1269) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.11985f, 0.801655f, 0.273814f, -1.09438f, -0.52531f, 0.166748f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1270) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1270) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { 0.266087f, 0.618557f, 0.031897f, -0.914419f, -0.134f, 0.179f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1271) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1271) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.762749f, -0.016292f, 1.59299f, 0.158751f, -4.75603f, -1.78591f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1272) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1272) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.509f, 0.608f, -0.332731f, -1.24444f, 0.262904f, 1.21961f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1273) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1273) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.76046f, 0.0455463f, 1.38348f, 0.700097f, -0.669451f, 0.321896f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1274) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1274) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { 0.151523f, 0.78611f, 0.120309f, -1.01387f, -0.134f, 0.179f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1275) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1275) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -1.00779f, -0.620278f, 0.81164f, -1.90759f, -1.32022f, 1.48356f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1276) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1276) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.33f, -0.236f, 0.267f, -0.139f, 0.25f, 0.509f, 0.86f, -0.089f, -0.018f, -0.847f, 0.424f, -0.573f, 0.097f, -0.663f, 0.65f, -0.811f, 0.283f, 0.032f }; + float X[] = { -0.509f, 0.608f, 0.021f, -0.848f, -0.134f, 0.179f }; + int incX = -1; + float x_expected[] = { -0.509f, 0.608f, -0.503138f, -1.26818f, 0.176615f, 0.447668f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1277) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1277) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.613838f, -1.13321f, -1.34847f, 0.0432903f, 0.0879552f, -0.479334f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1278) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1278) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { 0.76323f, -1.23595f, 0.943058f, -0.618694f, 0.296f, 0.034f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1279) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1279) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -1.15557f, -2.50103f, -3.85402f, -1.04833f, 0.414582f, 5.91218f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1280) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1280) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.037f, -0.599f, 1.39953f, -0.064424f, 1.0801f, -0.481747f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1281) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1281) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -3.0802f, -9.09377f, -1.05845f, 0.99239f, 0.259763f, -0.687744f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1282) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1282) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.513897f, 0.632031f, 1.14112f, -0.580648f, 0.296f, 0.034f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1283) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1283) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { 0.360899f, -0.456643f, -2.31803f, 0.257877f, 1.56928f, -0.922115f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1284) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1284) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + float A[] = { 0.041f, -0.61f, 0.099f, -0.393f, 0.357f, -0.984f, -0.576f, -0.342f, -0.903f, -0.083f, -0.157f, -0.694f, 0.768f, 0.688f, 0.203f, -0.079f, 0.298f, -0.424f }; + float X[] = { -0.037f, -0.599f, 0.959f, -0.499f, 0.296f, 0.034f }; + int incX = -1; + float x_expected[] = { -0.037f, -0.599f, 0.875872f, -1.03683f, -0.198184f, -0.207572f }; + cblas_ctbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctbsv(case 1285) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctbsv(case 1285) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 0.0490338308139, -0.158433417494, 0.261604043488, 1.28058846321, 1.77633350191, -1.07039599422 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1286) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1286) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.123, 0.122, 0.96534, 0.346049, 1.067212328, 0.445330131 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1287) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1287) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 72.7437666278, 10.4206532927, -4.34946941374, -14.8012581742, 2.01859491883, -1.53922125931 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1288) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1288) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.464775024, 0.662224708, -0.0457, 0.610264, 0.942, 0.98 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1289) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1289) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.591747295323, -0.534096923761, -4.60251824353, 1.70172936273, -4.94687072873, -3.32536493524 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1290) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1290) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.123, 0.122, 0.807692, 0.373091, 0.384974988, 1.400879194 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1291) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1291) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { -0.129998778267, -0.116630230861, 0.993340886904, 0.530739563688, 1.55891621291, -0.284019181928 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1292) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1292) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.474, 0.715, 0.061, 0.532, 0.004, -0.318, 0.37, -0.692, -0.166, 0.039, -0.946, 0.857, -0.922, -0.491, 0.012, -0.217, -0.674, -0.429 }; + double X[] = { -0.123, 0.122, 0.981, 0.321, 0.942, 0.98 }; + int incX = -1; + double x_expected[] = { 0.107496032, 0.025821594, 1.444898, -0.239924, 0.942, 0.98 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1293) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1293) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.825842176606, 0.212941473892, -0.548817434511, -0.703261551538, 0.0746069436827, 0.425751789407 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1294) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1294) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.619710352, 0.018225936, 1.211252, 0.891864, 0.293, -0.434 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1295) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1295) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { 0.203289119964, 1.58288482537, -1.7720160159, 0.479463518178, -0.511241930019, -1.79333888299 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1296) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1296) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.373, 0.566, 0.618602, -0.084689, 0.887531803, -0.570220771 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1297) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1297) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { 1.72799012007, 13.4612400765, 4.46126528205, -0.0212528722047, 0.627282377919, 0.302760084926 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1298) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1298) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -1.280839615, 1.560525655, 1.167331, 0.179227, 0.293, -0.434 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1299) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1299) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.594503951847, 0.00287302167266, -1.08185265666, -0.859860374254, 0.0331027077244, 1.28233265933 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1300) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1300) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { -0.872, -0.841, 0.108, -0.744, 0.231, -0.513, -0.973, 0.087, 0.348, 0.196, 0.447, 0.307, 0.632, -0.949, 0.322, 0.277, 0.282, 0.831 }; + double X[] = { -0.373, 0.566, 0.92, 0.627, 0.293, -0.434 }; + int incX = -1; + double x_expected[] = { -0.373, 0.566, 1.16074, 0.50314, -0.20669608, 0.37525144 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1301) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1301) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.0654496252357, 0.224007771015, -0.752486084395, -0.554870892947, -0.587163401057, 0.166737652215 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1302) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1302) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { -0.595558802, -1.147174647, 0.589506, -0.500919, -0.126, 0.459 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1303) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1303) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 3.39346077201, 0.652889512141, -2.33602680355, -2.7859245153, -5.04672104102, -0.334110541026 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1304) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1304) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.028, -0.804, -0.109456, -0.217192, -0.41110804, 0.41693792 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1305) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1305) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 7.16970224467, -0.772071373678, 0.833386981173, -0.673826630129, -0.26524050899, 0.465327628365 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1306) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1306) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.471459157, -1.566755859, 0.940839, 0.357132, -0.126, 0.459 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1307) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1307) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { -0.909961830373, 0.118063054039, -0.0169425582229, -1.00055409731, -1.37205489923, 0.994032418785 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1308) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1308) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 3; + int K = 1; + int lda = 3; + double A[] = { 0.404, 0.667, 0.861, 0.22, 0.298, -0.858, -0.682, -0.969, 0.327, -0.86, 0.125, 0.606, -0.143, -0.865, -0.036, 0.23, -0.776, 0.079 }; + double X[] = { 0.028, -0.804, 0.582, -0.078, -0.126, 0.459 }; + int incX = -1; + double x_expected[] = { 0.028, -0.804, -0.118596, 0.160828, -0.059271004, 0.294435972 }; + cblas_ztbsv(order, uplo, trans, diag, N, K, A, lda, X, incX); + { + int i; + for (i = 0; i < 3; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztbsv(case 1309) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztbsv(case 1309) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_tpmv.c b/gsl-1.9/cblas/test_tpmv.c new file mode 100644 index 0000000..9b3f1b7 --- /dev/null +++ b/gsl-1.9/cblas/test_tpmv.c @@ -0,0 +1,1659 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_tpmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.179133f, -0.549315f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 974)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.213f, 0.85518f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 975)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.055233f, -0.519495f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 976)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.0891f, 0.885f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 977)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.179133f, -0.549315f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 978)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.213f, 0.85518f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 979)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.055233f, -0.519495f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 980)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.587f, 0.14f, 0.841f }; + float X[] = { -0.213f, 0.885f }; + int incX = -1; + float x_expected[] = { -0.0891f, 0.885f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 981)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.49754f, 0.20961f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 982)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.022232f, -0.274f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 983)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.232308f, 0.444834f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 984)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { 0.243f, -0.038776f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 985)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.49754f, 0.20961f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 986)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.022232f, -0.274f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 987)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { -0.232308f, 0.444834f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 988)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.765f, 0.968f, -0.956f }; + float X[] = { 0.243f, -0.274f }; + int incX = -1; + float x_expected[] = { 0.243f, -0.038776f }; + cblas_stpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpmv(case 989)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.022072, -0.073151 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 990)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.062, -0.207298 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 991)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { 0.026769, -0.086853 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 992)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.013159, -0.221 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 993)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.022072, -0.073151 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 994)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.062, -0.207298 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 995)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { 0.026769, -0.086853 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 996)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.393, -0.221, 0.356 }; + double X[] = { -0.062, -0.221 }; + int incX = -1; + double x_expected[] = { -0.013159, -0.221 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 997)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { 0.165233, 0.25331 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 998)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.745135, 0.365 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 999)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.017632, -0.211618 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1000)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.928, -0.099928 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1001)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { 0.165233, 0.25331 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1002)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.745135, 0.365 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1003)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.017632, -0.211618 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1004)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.694, 0.501, 0.019 }; + double X[] = { -0.928, 0.365 }; + int incX = -1; + double x_expected[] = { -0.928, -0.099928 }; + cblas_dtpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpmv(case 1005)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.880215f, -0.602509f, -0.225207f, -0.564235f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1006) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1006) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.904f, 0.461f, -0.58925f, -0.778204f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1007) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1007) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.21467f, -0.432639f, -0.002957f, 0.366969f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1008) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1008) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.23846f, 0.63087f, -0.367f, 0.153f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1009) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1009) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.880215f, -0.602509f, -0.225207f, -0.564235f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1010) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1010) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 0.904f, 0.461f, -0.58925f, -0.778204f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1011) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1011) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.21467f, -0.432639f, -0.002957f, 0.366969f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1012) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1012) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.362f, -0.849f, -0.612f, -0.718f, 0.503f, -0.923f }; + float X[] = { 0.904f, 0.461f, -0.367f, 0.153f }; + int incX = -1; + float x_expected[] = { 1.23846f, 0.63087f, -0.367f, 0.153f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1013) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1013) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.281591f, -0.161308f, -0.9103f, 0.34578f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1014) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1014) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.05924f, -0.5178f, 0.444f, -0.748f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1015) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1015) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.115649f, -0.450508f, -1.26568f, 0.689239f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1016) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1016) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.338f, -0.807f, 0.088617f, -0.404541f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1017) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1017) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.281591f, -0.161308f, -0.9103f, 0.34578f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1018) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1018) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { -0.05924f, -0.5178f, 0.444f, -0.748f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1019) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1019) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.115649f, -0.450508f, -1.26568f, 0.689239f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1020) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1020) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.876f, -0.697f, -0.519f, -0.223f, 0.526f, -0.077f }; + float X[] = { 0.338f, -0.807f, 0.444f, -0.748f }; + int incX = -1; + float x_expected[] = { 0.338f, -0.807f, 0.088617f, -0.404541f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1021) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1021) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.295592f, 1.11591f, 0.610498f, -0.779458f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1022) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1022) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.646798f, 0.455824f, 0.602f, -0.96f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1023) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1023) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { 0.229206f, 0.296082f, 0.712384f, -0.465806f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1024) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1024) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.122f, -0.364f, 0.703886f, -0.646348f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1025) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1025) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.295592f, 1.11591f, 0.610498f, -0.779458f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1026) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1026) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.646798f, 0.455824f, 0.602f, -0.96f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1027) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1027) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { 0.229206f, 0.296082f, 0.712384f, -0.465806f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1028) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1028) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { 0.869f, -0.091f, -0.859f, 0.008f, -0.921f, -0.321f }; + float X[] = { -0.122f, -0.364f, 0.602f, -0.96f }; + int incX = -1; + float x_expected[] = { -0.122f, -0.364f, 0.703886f, -0.646348f }; + cblas_ctpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpmv(case 1029) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpmv(case 1029) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.466116, 0.156534, -0.248261, -0.067936 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1030) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1030) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.042, -0.705, -0.663093, -0.637955 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1031) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1031) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.905141, 0.539693, 0.159832, -0.283981 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1032) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1032) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.481025, -0.321841, -0.255, -0.854 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1033) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1033) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.466116, 0.156534, -0.248261, -0.067936 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1034) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1034) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.042, -0.705, -0.663093, -0.637955 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1035) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1035) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.905141, 0.539693, 0.159832, -0.283981 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1036) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1036) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.254, 0.263, -0.271, -0.595, -0.182, -0.672 }; + double X[] = { -0.042, -0.705, -0.255, -0.854 }; + int incX = -1; + double x_expected[] = { -0.481025, -0.321841, -0.255, -0.854 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1037) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1037) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.590302, 1.473768, -0.566422, -0.005436 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1038) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1038) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.139182, 1.574648, -0.689, -0.679 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1039) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1039) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.44312, 0.80312, -0.211814, -0.54022 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1040) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1040) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { -0.008, 0.904, -0.334392, -1.213784 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1041) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1041) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.590302, 1.473768, -0.566422, -0.005436 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1042) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1042) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.139182, 1.574648, -0.689, -0.679 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1043) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1043) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { 0.44312, 0.80312, -0.211814, -0.54022 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1044) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1044) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.421, -0.407, -0.595, -0.387, 0.884, -0.498 }; + double X[] = { -0.008, 0.904, -0.689, -0.679 }; + int incX = -1; + double x_expected[] = { -0.008, 0.904, -0.334392, -1.213784 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1045) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1045) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.449087, -1.068251, 0.375602, 0.672696 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1046) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1046) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.43236, 0.04007, -0.406, -0.948 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1047) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1047) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.657727, -0.543321, 0.167357, 1.431451 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1048) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1048) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.641, 0.565, -0.614245, -0.189245 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1049) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1049) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.449087, -1.068251, 0.375602, 0.672696 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1050) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1050) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -1.43236, 0.04007, -0.406, -0.948 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1051) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1051) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.657727, -0.543321, 0.167357, 1.431451 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1052) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1052) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { -0.743, -0.078, 0.77, 0.505, 0.157, -0.986 }; + double X[] = { -0.641, 0.565, -0.406, -0.948 }; + int incX = -1; + double x_expected[] = { -0.641, 0.565, -0.614245, -0.189245 }; + cblas_ztpmv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpmv(case 1053) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpmv(case 1053) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_tpsv.c b/gsl-1.9/cblas/test_tpsv.c new file mode 100644 index 0000000..1fbb895 --- /dev/null +++ b/gsl-1.9/cblas/test_tpsv.c @@ -0,0 +1,1659 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_tpsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1310)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1311)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1312)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1313)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1314)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1315)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1316)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1317)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1318)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1319)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1320)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1321)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.417992f, -0.0839895f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1322)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.12704f, 0.032f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1323)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.31929f, 0.360168f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1324)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.381f, 0.53f, 0.451f }; + float X[] = { 0.144f, 0.032f }; + int incX = -1; + float x_expected[] = { 0.144f, -0.04432f }; + cblas_stpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "stpsv(case 1325)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1326)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1327)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1328)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1329)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1330)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1331)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1332)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1333)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1334)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1335)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1336)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1337)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 4.76584842388, -1.86197183099 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1338)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -1.163378, -0.661 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1339)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { 1.67142857143, 1.42438631791 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1340)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.355, -0.698, -0.42 }; + double X[] = { -0.702, -0.661 }; + int incX = -1; + double x_expected[] = { -0.702, -1.150996 }; + cblas_dtpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtpsv(case 1341)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1342) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1342) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1343) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1343) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1344) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1344) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1345) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1345) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1346) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1346) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1347) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1347) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1348) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1348) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1349) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1349) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1350) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1350) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1351) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1351) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1352) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1352) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1353) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1353) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -2.48362f, 1.13085f, -1.67581f, -0.273264f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1354) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1354) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 0.431924f, 0.679112f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1355) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1355) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -1.05533f, 0.0529057f, -3.93625f, 1.36003f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1356) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1356) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, 0.818576f, 0.163438f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1357) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1357) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 2.15867f, 1.69498f, 1.69471f, 0.104738f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1358) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1358) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.613252f, 0.561896f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1359) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1359) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 1.00465f, 0.327432f, 3.44853f, 2.273f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1360) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1360) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, -0.806168f, -0.053086f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1361) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1361) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 2.15867f, 1.69498f, 1.69471f, 0.104738f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1362) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1362) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.613252f, 0.561896f, -0.072f, 0.642f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1363) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1363) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { 1.00465f, 0.327432f, 3.44853f, 2.273f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1364) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1364) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + float A[] = { -0.019f, -0.38f, 0.588f, 0.814f, 0.173f, -0.937f }; + float X[] = { -0.133f, 0.998f, -0.072f, 0.642f }; + int incX = -1; + float x_expected[] = { -0.133f, 0.998f, -0.806168f, -0.053086f }; + cblas_ctpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctpsv(case 1365) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctpsv(case 1365) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1366) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1366) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1367) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1367) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1368) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1368) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1369) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1369) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1370) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1370) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1371) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1371) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1372) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1372) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1373) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1373) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1374) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1374) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1375) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1375) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1376) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1376) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1377) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1377) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.00136463678, -1.84591534629, -1.12140892769, 0.696784840869 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1378) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1378) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 1.707508, -0.042521, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1379) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1379) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.430509772467, -0.0927067365535, -0.611144484555, 0.999982608216 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1380) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1380) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -0.795928, -0.523879 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1381) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1381) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -1.47384781823, -0.286556198408, 1.03098932879, -0.824698794397 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1382) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1382) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -0.016172, 1.175911, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1383) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1383) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.369363905801, -0.239798891331, 1.1759505739, -1.40027235656 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1384) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1384) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -1.05676, -1.151335 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1385) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1385) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -1.47384781823, -0.286556198408, 1.03098932879, -0.824698794397 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1386) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1386) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { -0.016172, 1.175911, -0.668, -0.945 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1387) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1387) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.369363905801, -0.239798891331, 1.1759505739, -1.40027235656 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1388) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1388) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 2; + double A[] = { 0.052, 0.875, 0.751, -0.912, 0.832, -0.153 }; + double X[] = { 0.344, -0.143, -0.668, -0.945 }; + int incX = -1; + double x_expected[] = { 0.344, -0.143, -1.05676, -1.151335 }; + cblas_ztpsv(order, uplo, trans, diag, N, A, X, incX); + { + int i; + for (i = 0; i < 2; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztpsv(case 1389) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztpsv(case 1389) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_trmm.c b/gsl-1.9/cblas/test_trmm.c new file mode 100644 index 0000000..26fab2b --- /dev/null +++ b/gsl-1.9/cblas/test_trmm.c @@ -0,0 +1,3947 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_trmm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.18f, 0.199f, 0.122f, -0.547f }; + int lda = 2; + float B[] = { -0.874f, -0.383f, 0.458f, 0.124f, -0.221f, -0.107f }; + int ldb = 3; + float B_expected[] = { 0.0397932f, 0.0338757f, -0.0183441f, 0.0203484f, -0.0362661f, -0.0175587f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1662)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.195f, -0.453f, -0.579f, 0.697f }; + int lda = 2; + float B[] = { 0.736f, 0.131f, 0.533f, 0.692f, -0.672f, -0.435f }; + int ldb = 3; + float B_expected[] = { -0.126757f, -0.130625f, -0.219017f, -0.2076f, 0.2016f, 0.1305f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1663)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.53f, 0.787f, 0.889f, -0.379f }; + int lda = 2; + float B[] = { -0.355f, 0.002f, 0.266f, 0.972f, 0.712f, -0.353f }; + int ldb = 3; + float B_expected[] = { -0.056445f, 3.18e-04f, 0.042294f, 0.205195f, 0.080421f, -0.111078f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1664)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.198f, -0.673f, 0.792f, 0.781f }; + int lda = 2; + float B[] = { 0.901f, 0.719f, -0.339f, -0.36f, 0.539f, 0.192f }; + int ldb = 3; + float B_expected[] = { -0.2703f, -0.2157f, 0.1017f, -0.106078f, -0.332534f, 0.0229464f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1665)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.522f, 0.851f, 0.586f, 0.196f }; + int lda = 2; + float B[] = { 0.335f, 0.617f, 0.118f, -0.143f, 0.677f, 0.456f }; + int ldb = 2; + float B_expected[] = { -0.0560076f, -0.0362796f, 0.0436182f, 0.0084084f, 0.0258534f, -0.0268128f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1666)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.006f, -0.613f, -0.966f, -0.758f }; + int lda = 2; + float B[] = { 0.64f, -0.723f, -0.765f, 0.801f, 0.376f, 0.91f }; + int ldb = 2; + float B_expected[] = { -0.401525f, 0.2169f, 0.46163f, -0.2403f, 0.150918f, -0.273f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1667)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.738f, 0.913f, -0.227f, 0.787f }; + int lda = 2; + float B[] = { 0.194f, 0.988f, -0.274f, -0.652f, -0.281f, -0.359f }; + int ldb = 2; + float B_expected[] = { -0.0429516f, -0.286403f, 0.0606636f, 0.228986f, 0.0622134f, 0.161726f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1668)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.952f, 0.598f, 0.25f, -0.508f }; + int lda = 2; + float B[] = { 0.036f, 0.745f, -0.606f, 0.215f, 0.943f, -0.933f }; + int ldb = 2; + float B_expected[] = { -0.0108f, -0.229958f, 0.1818f, 0.0442164f, -0.2829f, 0.110726f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1669)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.251f, 0.372f, -0.168f, 0.217f, -0.179f, 0.863f, -0.057f, 0.256f, 0.093f }; + int lda = 3; + float B[] = { -0.727f, -0.461f, 0.162f, 0.579f, -0.305f, -0.735f }; + int ldb = 3; + float B_expected[] = { -0.0547431f, 0.0563775f, 0.0781923f, 0.0435987f, -0.0809949f, 0.128653f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1670)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.014f, 0.204f, 0.163f, 0.842f, -0.918f, -0.748f, -0.859f, -0.463f, 0.292f }; + int lda = 3; + float B[] = { -0.587f, -0.625f, -0.994f, 0.681f, -0.577f, -0.434f }; + int ldb = 3; + float B_expected[] = { 0.1761f, 0.223424f, 0.186654f, -0.2043f, 0.131423f, -0.0325797f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1671)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.682f, -0.71f, 0.475f, -0.59f, -0.748f, 0.548f, 0.245f, 0.761f, -0.4f }; + int lda = 3; + float B[] = { 0.565f, 0.967f, -0.969f, 0.184f, 0.349f, -0.552f }; + int ldb = 3; + float B_expected[] = { 0.357979f, 0.438217f, -0.11628f, 0.139991f, 0.204337f, -0.06624f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1672)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.617f, -0.998f, -0.97f, 0.364f, 0.09f, 0.588f, -0.263f, 0.584f, 0.463f }; + int lda = 3; + float B[] = { 0.773f, 0.074f, -0.388f, 0.825f, -0.608f, 0.788f }; + int ldb = 3; + float B_expected[] = { -0.270594f, 0.0457776f, 0.1164f, -0.118933f, 0.0443424f, -0.2364f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1673)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.217f, -0.672f, -0.378f, -0.005f, -0.586f, -0.426f, 0.765f, -0.239f, -0.145f }; + int lda = 3; + float B[] = { 0.01f, 0.387f, -0.953f, -0.374f, -0.673f, -0.724f }; + int ldb = 2; + float B_expected[] = { -6.51e-04f, -0.0251937f, -0.167522f, -0.0651687f, -0.0999006f, -0.147126f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1674)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.962f, 0.515f, 0.292f, 0.354f, -0.366f, 0.455f, 0.134f, -0.564f, -0.303f }; + int lda = 3; + float B[] = { -0.337f, 0.718f, -0.866f, -0.454f, -0.439f, -0.668f }; + int ldb = 2; + float B_expected[] = { 0.1011f, -0.2154f, 0.295589f, 0.0599484f, -0.0012798f, 0.0947196f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1675)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.228f, -0.097f, 0.205f, 0.875f, -0.162f, 0.542f, -0.839f, -0.935f, 0.2f }; + int lda = 3; + float B[] = { -0.125f, -0.676f, 0.181f, 0.741f, 0.216f, 0.766f }; + int ldb = 2; + float B_expected[] = { -0.0165669f, -0.0717843f, -0.026325f, -0.088539f, -0.01296f, -0.04596f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1676)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.854f, -0.502f, 0.591f, -0.934f, -0.729f, 0.063f, 0.352f, 0.126f, -0.905f }; + int lda = 3; + float B[] = { -0.626f, -0.694f, -0.889f, -0.251f, -0.42f, -0.353f }; + int ldb = 2; + float B_expected[] = { 0.128383f, 0.232986f, 0.274638f, 0.0819717f, 0.126f, 0.1059f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1677)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.755f, 0.12f, 0.525f, 0.917f }; + int lda = 2; + float B[] = { -0.927f, -0.813f, 0.624f, -0.366f, -0.864f, -0.046f }; + int ldb = 3; + float B_expected[] = { 0.0699885f, 0.0613815f, -0.047112f, -0.0446862f, -0.0889848f, 0.0032698f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1678)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.444f, 0.515f, 0.081f, -0.69f }; + int lda = 2; + float B[] = { 0.571f, -0.098f, -0.226f, -0.587f, 0.788f, -0.629f }; + int ldb = 3; + float B_expected[] = { 0.0571f, -0.0098f, -0.0226f, -0.0292935f, 0.073753f, -0.074539f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1679)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.954f, 0.651f, -0.982f, 0.388f }; + int lda = 2; + float B[] = { -0.927f, -0.281f, -0.918f, -0.527f, -0.652f, -0.393f }; + int ldb = 3; + float B_expected[] = { 0.140187f, 0.0908338f, 0.12617f, -0.0204476f, -0.0252976f, -0.0152484f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1680)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.811f, 0.852f, 0.224f, 0.443f }; + int lda = 2; + float B[] = { -0.493f, -0.497f, -0.605f, 0.433f, -0.082f, -0.077f }; + int ldb = 3; + float B_expected[] = { -0.0396008f, -0.0515368f, -0.0622248f, 0.0433f, -0.0082f, -0.0077f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1681)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.777f, 0.812f, 0.254f, 0.97f }; + int lda = 2; + float B[] = { -0.509f, 0.171f, 0.986f, -0.644f, -0.97f, 0.814f }; + int ldb = 2; + float B_expected[] = { 0.0395493f, 0.0036584f, -0.0766122f, -0.0374236f, 0.075369f, 0.05432f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1682)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.962f, 0.912f, -0.238f, -0.336f }; + int lda = 2; + float B[] = { -0.666f, 0.066f, -0.176f, 0.402f, 0.286f, -0.703f }; + int ldb = 2; + float B_expected[] = { -0.0666f, 0.0224508f, -0.0176f, 0.0443888f, 0.0286f, -0.0771068f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1683)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.859f, -0.547f, 0.076f, 0.542f }; + int lda = 2; + float B[] = { 0.402f, 0.945f, -0.242f, -0.062f, 0.714f, 0.468f }; + int ldb = 2; + float B_expected[] = { -0.0171597f, 0.051219f, -0.0173964f, -0.0033604f, 0.035733f, 0.0253656f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1684)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.779f, 0.435f, 0.612f, -0.723f }; + int lda = 2; + float B[] = { 0.512f, -0.987f, -0.167f, 0.047f, -0.701f, -0.25f }; + int ldb = 2; + float B_expected[] = { 0.0082655f, -0.0987f, -0.0146555f, 0.0047f, -0.080975f, -0.025f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1685)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.757f, 0.396f, -0.927f, -0.558f, -0.289f, -0.66f, 0.83f, 0.363f, -0.13f }; + int lda = 3; + float B[] = { 0.041f, 0.333f, -0.682f, 0.193f, 0.581f, 0.963f }; + int ldb = 3; + float B_expected[] = { 0.0733045f, 0.0353883f, 0.008866f, -0.0808726f, -0.0803489f, -0.012519f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1686)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.75f, 0.674f, -0.576f, 0.376f, -0.46f, -0.813f, 0.419f, 0.792f, 0.226f }; + int lda = 3; + float B[] = { 0.511f, -0.544f, 0.938f, -0.126f, -0.873f, 0.118f }; + int ldb = 3; + float B_expected[] = { -0.0395944f, -0.130659f, 0.0938f, -0.078237f, -0.0968934f, 0.0118f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1687)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.045f, -0.809f, 0.654f, 0.611f, -0.038f, -0.105f, -0.946f, 0.474f, -0.097f }; + int lda = 3; + float B[] = { -0.625f, -0.123f, -0.48f, -0.088f, -0.757f, 0.974f }; + int ldb = 3; + float B_expected[] = { 0.0028125f, -0.0377201f, 0.0579508f, 3.96e-04f, -0.0025002f, -0.0370048f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1688)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.713f, 0.781f, 0.084f, -0.498f, 0.692f, 0.125f, 0.706f, -0.118f, -0.907f }; + int lda = 3; + float B[] = { 0.442f, -0.563f, 0.065f, -0.18f, 0.63f, -0.328f }; + int ldb = 3; + float B_expected[] = { 0.0442f, -0.0783116f, 0.0443486f, -0.018f, 0.071964f, -0.052942f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1689)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.442f, 0.566f, 0.064f, 0.962f, -0.669f, 0.416f, 0.761f, -0.359f, 0.863f }; + int lda = 3; + float B[] = { 0.261f, -0.659f, -0.536f, 0.694f, -0.305f, -0.675f }; + int ldb = 2; + float B_expected[] = { -0.0863099f, 0.0445231f, 0.0468079f, -0.0221961f, -0.0263215f, -0.0582525f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1690)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { 0.386f, 0.643f, -0.028f, -0.758f, -0.63f, -0.043f, 0.666f, -0.088f, 0.382f }; + int lda = 3; + float B[] = { -0.241f, 0.766f, 0.656f, -0.977f, 0.274f, 0.565f }; + int ldb = 2; + float B_expected[] = { -0.0555764f, 0.188286f, 0.0631888f, -0.102672f, 0.0274f, 0.0565f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1691)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.855f, -0.587f, 0.062f, 0.372f, 0.48f, -0.63f, -0.786f, -0.437f, -0.431f }; + int lda = 3; + float B[] = { 0.116f, 0.534f, 0.043f, 0.73f, 0.945f, 0.528f }; + int ldb = 2; + float B_expected[] = { -0.009918f, -0.045657f, -0.0047452f, 0.0036942f, -0.0427193f, -0.065436f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1692)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 0.1f; + float A[] = { -0.068f, 0.119f, -0.244f, -0.05f, 0.685f, 0.752f, -0.059f, -0.935f, -0.571f }; + int lda = 3; + float B[] = { -0.753f, -0.319f, 0.164f, 0.979f, 0.885f, -0.822f }; + int ldb = 2; + float B_expected[] = { -0.0753f, -0.0319f, 0.0074393f, 0.0941039f, 0.119206f, -7.956e-04f }; + cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1693)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.174, -0.308, 0.997, -0.484 }; + int lda = 2; + double B[] = { -0.256, -0.178, 0.098, 0.004, 0.97, -0.408 }; + int ldb = 3; + double B_expected[] = { 0.0137328, 0.0989196, -0.0428148, 5.808e-04, 0.140844, -0.0592416 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1694)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.722, -0.372, 0.466, -0.831 }; + int lda = 2; + double B[] = { 0.322, -0.183, 0.849, -0.051, -0.343, -0.98 }; + int ldb = 3; + double B_expected[] = { -0.1022916, 0.0166212, -0.364068, 0.0153, 0.1029, 0.294 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1695)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.656, -0.066, 0.582, 0.141 }; + int lda = 2; + double B[] = { 0.73, 0.407, 0.721, 0.086, -0.294, 0.941 }; + int ldb = 3; + double B_expected[] = { 0.143664, 0.0800976, 0.1418928, -0.1310958, -0.058626, -0.1656909 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1696)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.341, 0.386, -0.578, 0.863 }; + int lda = 2; + double B[] = { -0.306, -0.047, -0.162, -0.784, 0.472, 0.137 }; + int ldb = 3; + double B_expected[] = { 0.0918, 0.0141, 0.0486, 0.1821396, -0.1497498, -0.0691908 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1697)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.844, -0.832, 0.179, -0.775 }; + int lda = 2; + double B[] = { -0.415, -0.547, -0.023, 0.42, 0.917, 0.485 }; + int ldb = 2; + double B_expected[] = { 0.1344519, -0.1271775, -0.0167304, 0.09765, -0.2582289, 0.1127625 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1698)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.239, 0.34, 0.964, -0.575 }; + int lda = 2; + double B[] = { 0.762, -0.038, -0.8, 0.626, -0.701, 0.639 }; + int ldb = 2; + double B_expected[] = { -0.2176104, 0.0114, 0.0589608, -0.1878, 0.0255012, -0.1917 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1699)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.785, -0.0, -0.592, -0.661 }; + int lda = 2; + double B[] = { -0.215, 0.953, 0.527, -0.418, -0.675, 0.283 }; + int ldb = 2; + double B_expected[] = { 0.0506325, 0.1889799, -0.1241085, -0.0828894, 0.1589625, 0.0561189 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1700)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.423, -0.807, -0.683, -0.225 }; + int lda = 2; + double B[] = { 0.149, -0.129, 0.149, -0.234, 0.275, 0.658 }; + int ldb = 2; + double B_expected[] = { -0.0447, 0.0747729, -0.0447, 0.1062729, -0.0825, -0.1308225 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1701)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.276, 0.434, 0.917, 0.682, -0.32, 0.557, -0.302, 0.989, -0.043 }; + int lda = 3; + double B[] = { -0.943, 0.839, 0.759, 0.752, 0.807, 0.288 }; + int ldb = 3; + double B_expected[] = { -0.0780804, 0.2033226, 0.1290135, 0.0622656, -0.0204384, -0.3380097 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1702)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.731, -0.953, -0.666, 0.684, 0.38, 0.419, -0.361, 0.378, -0.423 }; + int lda = 3; + double B[] = { -0.983, 0.479, -0.136, 0.048, 0.745, -0.408 }; + int ldb = 3; + double B_expected[] = { 0.2949, -0.4247397, -0.2158137, -0.0144, -0.2097768, 0.0383439 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1703)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.953, -0.983, 0.237, 0.128, -0.378, 0.607, 0.41, 0.418, -0.221 }; + int lda = 3; + double B[] = { -0.561, -0.114, -0.148, 0.488, 0.146, -0.688 }; + int ldb = 3; + double B_expected[] = { -0.1378083, 0.0056316, -0.0098124, 0.2185368, 0.1028316, -0.0456144 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1704)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.277, -0.587, 0.885, -0.933, -0.582, 0.528, 0.268, -0.804, 0.62 }; + int lda = 3; + double B[] = { -0.831, -0.319, -0.547, -0.577, 0.295, -0.31 }; + int ldb = 3; + double B_expected[] = { 0.2039907, -0.0362364, 0.1641, 0.2805945, -0.163272, 0.093 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1705)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.256, 0.554, 0.342, 0.318, -0.824, -0.119, -0.399, -0.653, -0.83 }; + int lda = 3; + double B[] = { -0.577, 0.861, -0.439, -0.916, 0.452, -0.168 }; + int ldb = 2; + double B_expected[] = { 0.0443136, -0.0661248, -0.053475, -0.3085746, -0.042519, -0.1182147 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1706)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.837, -0.03, 0.552, -0.43, 0.841, 0.035, 0.7, 0.637, 0.095 }; + int lda = 3; + double B[] = { -0.82, -0.362, -0.252, -0.062, -0.942, -0.299 }; + int ldb = 2; + double B_expected[] = { 0.246, 0.1086, -0.03018, -0.028098, 0.5029572, 0.1775682 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1707)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { -0.074, 0.49, 0.802, -0.454, 0.626, 0.123, -0.959, 0.971, 0.75 }; + int lda = 3; + double B[] = { -0.545, -0.107, 0.096, 0.183, 0.185, -0.218 }; + int ldb = 2; + double B_expected[] = { -0.070722, 0.0231744, -0.0248553, -0.0263232, -0.041625, 0.04905 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1708)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -0.3; + double A[] = { 0.048, 0.148, 0.834, -0.98, -0.009, -0.727, 0.241, 0.276, 0.518 }; + int lda = 3; + double B[] = { -0.664, -0.136, -0.793, -0.742, 0.126, -0.131 }; + int ldb = 2; + double B_expected[] = { 0.202884, 0.106521, 0.2653806, 0.1940289, -0.0378, 0.0393 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1709)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.427, 0.495, 0.282, 0.158 }; + int lda = 2; + double B[] = { 0.899, -0.375, 0.376, -0.831, 0.431, -0.387 }; + int ldb = 3; + double B_expected[] = { 0.0383873, -0.0160125, 0.0160552, 0.0313707, -0.0117527, 0.0124974 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1710)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.632, -0.174, 0.608, -0.669 }; + int lda = 2; + double B[] = { -0.335, 0.535, -0.978, 0.31, 0.023, -0.853 }; + int ldb = 3; + double B_expected[] = { -0.0335, 0.0535, -0.0978, 0.036829, -0.007009, -0.0682828 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1711)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.779, -0.73, 0.343, -0.665 }; + int lda = 2; + double B[] = { -0.976, -0.2, 0.661, -0.975, -0.965, -0.861 }; + int ldb = 3; + double B_expected[] = { 0.0425879, -0.0175195, -0.0810242, 0.0648375, 0.0641725, 0.0572565 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1712)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.127, -0.634, -0.384, -0.815 }; + int lda = 2; + double B[] = { -0.348, 0.748, 0.893, 0.91, 0.153, -0.408 }; + int ldb = 3; + double B_expected[] = { -0.069744, 0.0689248, 0.1049672, 0.091, 0.0153, -0.0408 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1713)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.603, -0.617, 0.402, -0.918 }; + int lda = 2; + double B[] = { 0.051, -0.096, 0.476, 0.377, 0.931, 0.291 }; + int ldb = 2; + double B_expected[] = { -0.0030753, 0.010863, -0.0287028, -0.0154734, -0.0561393, 0.0107124 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1714)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.67, -0.475, 0.032, -0.036 }; + int lda = 2; + double B[] = { -0.19, 0.829, 0.942, 0.885, 0.087, 0.321 }; + int ldb = 2; + double B_expected[] = { -0.019, 0.082292, 0.0942, 0.0915144, 0.0087, 0.0323784 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1715)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.64, 0.595, 0.642, -0.921 }; + int lda = 2; + double B[] = { -0.278, -0.83, 0.922, -0.701, -0.598, -0.232 }; + int ldb = 2; + double B_expected[] = { -0.031593, 0.076443, -0.1007175, 0.0645621, 0.024468, 0.0213672 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1716)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.842, 0.625, 0.967, 0.341 }; + int lda = 2; + double B[] = { -0.679, -0.846, -0.921, 0.672, 0.292, 0.752 }; + int ldb = 2; + double B_expected[] = { -0.120775, -0.0846, -0.0501, 0.0672, 0.0762, 0.0752 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1717)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.612, 0.593, 0.113, -0.658, 0.703, -0.023, -0.384, 0.439, 0.958 }; + int lda = 3; + double B[] = { -0.858, -0.559, 0.499, -0.114, 0.57, 0.847 }; + int ldb = 3; + double B_expected[] = { 0.0249996, -0.0404454, 0.0478042, 0.0503489, 0.0381229, 0.0811426 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1718)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.844, 0.205, -0.692, -0.401, -0.823, 0.342, -0.384, 0.344, 0.18 }; + int lda = 3; + double B[] = { 0.823, -0.181, 0.141, 0.932, 0.097, -0.636 }; + int ldb = 3; + double B_expected[] = { 0.0688323, -0.0132778, 0.0141, 0.1391997, -0.0120512, -0.0636 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1719)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.065, 0.678, 0.044, -0.472, 0.932, -0.388, 0.432, -0.167, -0.277 }; + int lda = 3; + double B[] = { 0.675, -0.468, -0.564, 0.71, -0.624, 0.023 }; + int ldb = 3; + double B_expected[] = { 0.0043875, -0.0754776, 0.0525984, 0.004615, -0.0916688, 0.0404557 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1720)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.649, -0.171, -0.462, 0.593, 0.131, -0.317, -0.254, -0.948, 0.002 }; + int lda = 3; + double B[] = { -0.519, -0.501, -0.024, -0.767, -0.591, -0.738 }; + int ldb = 3; + double B_expected[] = { -0.0519, -0.0808767, 0.0582774, -0.0767, -0.1045831, 0.0017086 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1721)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.023, -0.872, -0.313, -0.698, 0.06, -0.838, -0.455, -0.715, -0.257 }; + int lda = 3; + double B[] = { -0.17, -0.184, -0.243, 0.907, -0.423, 0.665 }; + int ldb = 2; + double B_expected[] = { 0.0365989, -0.0931429, 0.0287865, -0.0421055, 0.0108711, -0.0170905 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1722)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.792, 0.338, -0.155, 0.009, 0.485, -0.633, -0.08, -0.579, 0.223 }; + int lda = 3; + double B[] = { -0.19, 0.201, 0.685, 0.663, 0.302, -0.506 }; + int ldb = 2; + double B_expected[] = { -0.0207995, 0.0247447, 0.0510142, 0.0955974, 0.0302, -0.0506 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1723)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { -0.076, 0.103, -0.021, -0.866, 0.777, 0.723, 0.378, 0.98, -0.32 }; + int lda = 3; + double B[] = { 0.739, -0.996, 0.182, 0.626, 0.291, -0.267 }; + int ldb = 2; + double B_expected[] = { -0.0056164, 0.0075696, 0.0217531, 0.0383814, 0.0022947, 0.0558954 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1724)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = 0.1; + double A[] = { 0.469, 0.822, -0.619, 0.953, -0.706, 0.318, 0.559, -0.68, -0.208 }; + int lda = 3; + double B[] = { 0.362, 0.719, -0.661, -0.504, 0.595, -0.771 }; + int ldb = 2; + double B_expected[] = { 0.0362, 0.0719, -0.0363436, 0.0087018, 0.0160724, -0.1376333 }; + cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1725)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.023f, 0.762f, -0.687f, -0.039f, -0.459f, 0.047f, 0.189f, 0.33f }; + int lda = 2; + float B[] = { 0.827f, -0.561f, 0.641f, -0.229f, -0.884f, -0.533f, -0.624f, -0.138f, 0.073f, 0.924f, -0.501f, -0.164f }; + int ldb = 3; + float B_expected[] = { -0.831767f, -0.762219f, -0.14564f, 0.143926f, -0.764269f, 0.529142f, 0.072396f, 0.232002f, 0.291123f, -0.198726f, 0.040569f, 0.196326f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1726) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1726) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.24f, 0.581f, 0.06f, 0.064f, 0.981f, 0.792f, 0.242f, -0.529f }; + int lda = 2; + float B[] = { -0.649f, -0.774f, -0.43f, -0.447f, -0.266f, 0.285f, 0.787f, 0.274f, 0.449f, -0.912f, 0.435f, 0.601f }; + int ldb = 3; + float B_expected[] = { 0.619316f, 0.707192f, 0.344692f, 0.472984f, 0.278364f, -0.3489f, -0.787f, -0.274f, -0.449f, 0.912f, -0.435f, -0.601f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1727) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1727) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.68f, -0.728f, -0.59f, -0.434f, -0.936f, 0.915f, 0.236f, -0.118f }; + int lda = 2; + float B[] = { 0.461f, 0.48f, 0.224f, 0.215f, -0.419f, -0.525f, 0.113f, -0.582f, 0.468f, 0.269f, 0.943f, -0.587f }; + int ldb = 3; + float B_expected[] = { -0.66292f, 0.009208f, -0.30884f, 0.016872f, 0.66712f, 0.051968f, 0.912704f, 0.178151f, 0.264199f, -0.01198f, -1.02584f, 0.141791f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1728) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1728) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.699f, -0.709f, -0.775f, 0.779f, 0.5f, 0.774f, -0.399f, -0.843f }; + int lda = 2; + float B[] = { 0.538f, 0.556f, -0.186f, -0.678f, -0.413f, -0.612f, -0.216f, -0.519f, -0.344f, -0.578f, -0.938f, -0.848f }; + int ldb = 3; + float B_expected[] = { -0.538f, -0.556f, 0.186f, 0.678f, 0.413f, 0.612f, 0.377344f, -0.175412f, -0.087772f, 1.06096f, 0.670812f, 1.47366f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1729) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1729) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.527f, 0.318f, -0.224f, 0.547f, -0.765f, -0.469f, 0.233f, 0.023f }; + int lda = 2; + float B[] = { 0.54f, -0.418f, -0.892f, -0.118f, -0.296f, 0.019f, 0.786f, -0.145f, 0.136f, 0.472f, 0.731f, 0.333f }; + int ldb = 2; + float B_expected[] = { -1.04454f, -0.460052f, 0.205122f, 0.04801f, 0.831329f, 0.341824f, -0.186473f, 0.015707f, 0.481462f, 0.305592f, -0.162664f, -0.094402f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1730) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1730) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.109f, -0.852f, 0.395f, 0.871f, 0.378f, -0.493f, 0.51f, 0.973f }; + int lda = 2; + float B[] = { -0.867f, -0.758f, 0.687f, -0.596f, -0.912f, -0.561f, -0.389f, 0.21f, -0.561f, 0.132f, 0.689f, 0.653f }; + int ldb = 2; + float B_expected[] = { 0.901142f, 1.32198f, -0.687f, 0.596f, 0.955512f, 0.289843f, 0.389f, -0.21f, -0.021371f, -0.039157f, -0.689f, -0.653f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1731) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1731) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.686f, 0.349f, 0.299f, -0.462f, 0.009f, -0.693f, -0.478f, -0.617f }; + int lda = 2; + float B[] = { -0.409f, 0.986f, -0.854f, 0.346f, 0.444f, -0.659f, 0.027f, 0.007f, 0.842f, -0.473f, 0.825f, 0.866f }; + int ldb = 2; + float B_expected[] = { 0.624688f, -0.533655f, -0.954935f, -0.845302f, -0.534575f, 0.297118f, 0.180289f, 0.422174f, -0.742689f, 0.03062f, -0.173204f, 1.4534f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1732) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1732) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.286f, 0.661f, 0.372f, 0.28f, 0.482f, 0.267f, -0.436f, 0.844f }; + int lda = 2; + float B[] = { 0.0f, -0.513f, 0.91f, 0.109f, 0.587f, -0.183f, 0.112f, 0.362f, -0.256f, -0.518f, -0.933f, 0.066f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.513f, -1.05364f, 0.081836f, -0.587f, 0.183f, -0.381604f, -0.458284f, 0.256f, 0.518f, 0.883192f, 0.198376f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1733) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1733) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.678f, 0.717f, 0.228f, 0.001f, -0.16f, -0.387f, -0.281f, -0.002f, 0.623f, 0.162f, -0.594f, 0.632f, 0.566f, 0.352f, -0.411f, 0.574f, 0.314f, -0.139f }; + int lda = 3; + float B[] = { -0.823f, -0.042f, 0.171f, -0.928f, 0.66f, 0.965f, 0.472f, 0.006f, -0.083f, 0.937f, -0.814f, 0.9f }; + int ldb = 3; + float B_expected[] = { 0.52788f, 0.618567f, -0.069267f, 0.560841f, -0.941723f, -1.19579f, -0.315714f, -0.342492f, 0.095893f, -0.572145f, 0.746576f, 0.396912f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1734) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1734) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.346f, 0.915f, -0.227f, -0.066f, -0.166f, -0.921f, -0.373f, 0.312f, -0.824f, 0.699f, -0.114f, -0.152f, 0.862f, -0.077f, 0.221f, -0.757f, -0.413f, -0.494f }; + int lda = 3; + float B[] = { -0.02f, -0.247f, -0.62f, 0.651f, -0.07f, -0.491f, 0.042f, 0.936f, 0.272f, -0.582f, 0.012f, -0.534f }; + int ldb = 3; + float B_expected[] = { 0.02f, 0.247f, 0.631762f, -0.708389f, 0.124535f, 0.411552f, -0.042f, -0.936f, -0.324242f, 0.797244f, -0.747612f, 0.703054f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1735) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1735) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.493f, -0.882f, -0.82f, 0.627f, 0.301f, -0.903f, -0.092f, 0.787f, -0.426f, -0.854f, -0.993f, 0.118f, 0.615f, 0.362f, -0.238f, -0.076f, 0.817f, -0.286f }; + int lda = 3; + float B[] = { 0.395f, 0.074f, -0.191f, -0.548f, 0.858f, 0.323f, -0.734f, 0.612f, 0.895f, 0.849f, 0.811f, 0.402f }; + int ldb = 3; + float B_expected[] = { -0.730125f, -0.024468f, 0.566282f, -0.25448f, -0.793364f, -0.018503f, -0.504384f, -1.51274f, -0.18131f, 1.28332f, -0.777559f, -0.096488f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1736) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1736) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.033f, -0.383f, 0.116f, 0.797f, -0.99f, 0.765f, 0.915f, 0.002f, 0.228f, 0.077f, 0.597f, -0.454f, -0.629f, 0.424f, -0.89f, 0.339f, -0.484f, 0.169f }; + int lda = 3; + float B[] = { -0.377f, -0.451f, -0.464f, -0.673f, 0.231f, -0.712f, -0.457f, -0.588f, 0.373f, -0.754f, -0.468f, 0.433f }; + int ldb = 3; + float B_expected[] = { 0.643625f, 0.521931f, 0.428222f, -0.038989f, -0.231f, 0.712f, 0.003417f, 1.74795f, -0.642733f, 1.29802f, 0.468f, -0.433f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1737) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1737) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.946f, -0.007f, 0.677f, -0.923f, 0.651f, -0.685f, 0.591f, 0.135f, 0.171f, 0.979f, -0.029f, -0.008f, -0.049f, 0.174f, 0.578f, 0.388f, 0.187f, -0.479f }; + int lda = 3; + float B[] = { -0.607f, -0.907f, -0.156f, -0.141f, -0.254f, 0.364f, 0.209f, 0.955f, 0.93f, 0.962f, 0.494f, 0.079f }; + int ldb = 2; + float B_expected[] = { 0.580571f, 0.853773f, 0.148563f, 0.132294f, 0.636082f, 0.804404f, 0.972367f, -0.263525f, -0.534225f, 0.214911f, 0.087341f, -0.390994f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1738) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1738) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.203f, -0.791f, -0.415f, -0.56f, 0.782f, -0.691f, -0.441f, 0.545f, -0.09f, 0.595f, -0.438f, 0.952f, 0.88f, 0.944f, -0.55f, -0.762f, -0.035f, -0.949f }; + int lda = 3; + float B[] = { -0.035f, 0.448f, 0.487f, -0.108f, -0.482f, -0.708f, -0.317f, 0.816f, -0.547f, 0.22f, -0.654f, 0.57f }; + int ldb = 2; + float B_expected[] = { 0.035f, -0.448f, -0.487f, 0.108f, 0.710725f, 0.924643f, 0.472907f, -1.12904f, 1.27511f, -1.33788f, -0.672654f, -0.727442f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1739) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1739) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { -0.09f, 0.742f, 0.081f, 0.459f, -0.54f, 0.04f, 0.574f, -0.858f, 0.704f, 0.686f, -0.9f, -0.519f, 0.538f, -0.934f, 0.467f, 0.376f, 0.149f, 0.322f }; + int lda = 3; + float B[] = { 0.307f, 0.294f, -0.428f, -0.7f, 0.496f, 0.167f, -0.611f, 0.904f, -0.846f, -0.411f, 0.29f, 0.004f }; + int ldb = 2; + float B_expected[] = { -0.191025f, -0.630625f, 0.063267f, 0.452361f, -0.782713f, -1.2668f, 1.30921f, -0.06316f, -0.006288f, 0.333651f, -0.041922f, -0.093976f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1740) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1740) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-1.0f, 0.0f}; + float A[] = { 0.434f, 0.691f, 0.983f, -0.481f, -0.156f, -0.117f, -0.231f, 0.526f, 0.935f, 0.417f, -0.142f, -0.541f, 0.529f, 0.014f, 0.266f, 0.086f, 0.666f, 0.033f }; + int lda = 3; + float B[] = { 0.972f, -0.219f, -0.735f, -0.967f, 0.084f, -0.355f, -0.152f, -0.156f, 0.267f, 0.928f, 0.708f, -0.267f }; + int ldb = 2; + float B_expected[] = { -0.950741f, 0.784376f, 1.10114f, 1.08842f, -0.548134f, 0.631223f, 0.396983f, 0.501114f, -0.267f, -0.928f, -0.708f, 0.267f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1741) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1741) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.25f, -0.779f, -0.138f, -0.017f, -0.319f, -0.555f, 0.674f, -0.256f }; + int lda = 2; + float B[] = { -0.651f, -0.525f, 0.409f, -0.932f, 0.359f, 0.321f, 0.419f, 0.027f, 0.67f, 0.328f, 0.446f, -0.615f }; + int ldb = 3; + float B_expected[] = { 0.0100296f, -0.216136f, 0.257045f, -0.0571445f, -0.0121016f, 0.124004f, -0.110514f, 0.0386878f, -0.1561f, -0.0050383f, 0.028185f, 0.183634f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1742) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1742) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.012f, 0.978f, 0.617f, -0.361f, -0.349f, 0.712f, 0.008f, 0.305f }; + int lda = 2; + float B[] = { -0.771f, -0.335f, -0.565f, 0.866f, -0.516f, -0.869f, -0.097f, -0.711f, 0.308f, 0.207f, -0.459f, 0.766f }; + int ldb = 3; + float B_expected[] = { 0.2648f, 0.0234f, 0.0829f, -0.3163f, 0.2417f, 0.2091f, 0.272029f, 0.122445f, -0.176135f, -0.256384f, 0.285714f, -0.233939f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1743) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1743) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.063f, -0.605f, 0.473f, 0.763f, 0.548f, -0.167f, -0.825f, 0.011f }; + int lda = 2; + float B[] = { -0.262f, 0.135f, -0.333f, -0.671f, 0.91f, 0.874f, 0.305f, -0.255f, 0.882f, 0.883f, 0.088f, -0.473f }; + int ldb = 3; + float B_expected[] = { -0.0627538f, 0.0344746f, -0.131779f, -0.149516f, -0.0442507f, 0.307921f, 0.053273f, -0.089001f, 0.293086f, 0.141896f, -0.0189002f, -0.124098f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1744) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1744) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.493f, -0.852f, -0.567f, 0.21f, 0.168f, 0.666f, -0.328f, 0.803f }; + int lda = 2; + float B[] = { 0.24f, -0.578f, 0.293f, -0.233f, -0.348f, -0.853f, -0.145f, 0.192f, -0.785f, -0.72f, -0.508f, 0.023f }; + int ldb = 3; + float B_expected[] = { 0.037901f, 0.201471f, -0.104515f, 0.327095f, 0.253345f, 0.311373f, 0.0243f, -0.0721f, 0.3075f, 0.1375f, 0.1501f, -0.0577f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1745) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1745) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.089f, -0.135f, 0.987f, 0.936f, 0.353f, 0.638f, 0.845f, 0.343f }; + int lda = 2; + float B[] = { 0.744f, 0.445f, 0.835f, 0.273f, 0.702f, 0.03f, -0.618f, 0.141f, -0.303f, -0.399f, 0.63f, -0.037f }; + int ldb = 2; + float B_expected[] = { 0.0158468f, 0.0413994f, -0.292082f, -0.285588f, 0.0272724f, 0.0233892f, 0.0660084f, -0.143882f, 0.0004278f, -0.0256146f, -0.19286f, 0.114065f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1746) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1746) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.187f, -0.741f, 0.287f, -0.599f, -0.293f, -0.297f, 0.778f, -0.056f }; + int lda = 2; + float B[] = { -0.335f, -0.713f, 0.081f, -0.589f, -0.256f, -0.809f, -0.473f, 0.418f, 0.646f, -0.447f, -0.147f, 0.314f }; + int ldb = 2; + float B_expected[] = { 0.1718f, 0.1804f, 0.0378414f, 0.0809182f, 0.1577f, 0.2171f, 0.118373f, -0.283147f, -0.1491f, 0.1987f, 0.1154f, -0.122836f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1747) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1747) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.259f, -0.645f, -0.09f, 0.709f, 0.729f, -0.023f, -0.792f, 0.03f }; + int lda = 2; + float B[] = { 0.904f, -0.402f, 0.753f, 0.104f, 0.38f, 0.944f, -0.715f, -0.378f, -0.16f, 0.254f, -0.68f, 0.183f }; + int ldb = 2; + float B_expected[] = { 0.185924f, -0.0771597f, 0.185827f, -0.0420162f, -0.156592f, 0.373034f, -0.201079f, -0.0256158f, 0.0051007f, 0.152025f, -0.143387f, 0.102908f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1748) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1748) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.938f, 0.25f, -0.509f, 0.377f, -0.063f, 0.166f, 0.227f, -0.24f }; + int lda = 2; + float B[] = { 0.756f, -0.08f, -0.657f, -0.837f, -0.714f, 0.781f, 0.239f, -0.953f, 0.26f, 0.696f, -0.183f, 0.668f }; + int ldb = 2; + float B_expected[] = { -0.431623f, 0.111093f, 0.2808f, 0.1854f, 0.007293f, -0.454491f, 0.0236f, 0.3098f, -0.059093f, -0.075968f, -0.0119f, -0.2187f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1749) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1749) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.055f, -0.682f, 0.361f, 0.521f, -0.192f, -0.664f, -0.167f, 0.731f, -0.668f, 0.983f, 0.608f, 0.533f, -0.513f, -0.781f, 0.878f, 0.875f, 0.804f, -0.179f }; + int lda = 3; + float B[] = { -0.038f, -0.787f, -0.209f, -0.686f, -0.073f, -0.662f, 0.938f, -0.301f, -0.871f, 0.699f, 0.561f, 0.823f }; + int ldb = 3; + float B_expected[] = { 0.224558f, -0.0087435f, -0.317863f, 0.168822f, 0.105075f, 0.138035f, 0.256887f, 0.377119f, 0.113231f, 0.136832f, -0.235636f, -0.108546f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1750) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1750) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.397f, -0.154f, -0.944f, -0.137f, 0.65f, -0.49f, -0.883f, 0.273f, -0.137f, 0.655f, 0.531f, 0.676f, 0.052f, 0.03f, -0.602f, 0.002f, 0.005f, 0.984f }; + int lda = 3; + float B[] = { -0.446f, 0.091f, 0.793f, -0.221f, 0.386f, 0.354f, -0.063f, 0.105f, -0.128f, 0.189f, -0.079f, 0.749f }; + int ldb = 3; + float B_expected[] = { 0.216958f, -0.149634f, -0.25039f, 0.0074932f, -0.1512f, -0.0676f, -0.166784f, -0.100965f, 0.14955f, -0.227622f, -0.0512f, -0.2326f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1751) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1751) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.976f, -0.488f, -0.762f, -0.057f, 0.812f, 0.006f, 0.06f, -0.271f, 0.832f, -0.232f, 0.188f, -0.466f, -0.051f, -0.745f, 0.909f, -0.091f, -0.559f, 0.595f }; + int lda = 3; + float B[] = { 0.644f, -0.584f, 0.456f, 0.443f, -0.909f, 0.43f, 0.771f, -0.075f, -0.408f, 0.303f, 0.03f, 0.529f }; + int ldb = 3; + float B_expected[] = { 0.24849f, -0.168067f, -0.114085f, 0.0202884f, 0.0152508f, 0.284926f, 0.267034f, 0.0120048f, 0.0596364f, -0.0643158f, 0.284594f, 0.0837608f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1752) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1752) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.924f, -0.247f, -0.131f, 0.932f, -0.415f, 0.454f, -0.539f, 0.693f, -0.725f, -0.601f, 0.565f, 0.002f, -0.118f, 0.626f, -0.968f, 0.874f, 0.156f, -0.227f }; + int lda = 3; + float B[] = { 0.793f, -0.15f, -0.967f, 0.821f, 0.37f, -0.572f, -0.156f, 0.106f, -0.877f, -0.297f, 0.448f, -0.576f }; + int ldb = 3; + float B_expected[] = { -0.2229f, 0.1243f, 0.242003f, -0.564467f, -0.0068716f, 0.568213f, 0.0362f, -0.0474f, 0.306136f, 0.0520352f, -0.336053f, 0.500406f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1753) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1753) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.671f, 0.477f, 0.227f, 0.685f, -0.648f, 0.277f, -0.295f, -0.632f, 0.509f, -0.798f, 0.875f, 0.89f, -0.34f, -0.786f, -0.453f, 0.511f, -0.189f, 0.385f }; + int lda = 3; + float B[] = { -0.895f, -0.148f, 0.934f, 0.229f, 0.958f, -0.55f, 0.49f, 0.586f, -0.871f, 0.618f, -0.0f, -0.543f }; + int ldb = 2; + float B_expected[] = { 0.162976f, 0.110656f, -0.12507f, -0.0587256f, 0.138701f, 0.543589f, -0.313677f, 0.0534812f, 0.067207f, 0.12831f, -0.0729792f, -0.0098826f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1754) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1754) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.438f, -0.618f, 0.524f, 0.525f, -0.268f, -0.502f, -0.685f, 0.28f, 0.508f, 0.664f, -0.492f, 0.772f, -0.997f, 0.693f, 0.63f, -0.328f, -0.521f, -0.869f }; + int lda = 3; + float B[] = { 0.527f, 0.999f, -0.078f, 0.599f, 0.004f, -0.615f, -0.281f, -0.328f, 0.456f, -0.666f, 0.309f, -0.69f }; + int ldb = 2; + float B_expected[] = { -0.45115f, -0.650085f, -0.277633f, -0.456478f, 0.0965652f, 0.362528f, 0.1802f, 0.227951f, -0.0702f, 0.2454f, -0.0237f, 0.2379f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1755) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1755) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.454f, 0.517f, -0.794f, -0.181f, 0.292f, 0.954f, -0.93f, -0.128f, 0.123f, -0.997f, 0.325f, -0.317f, -0.988f, 0.732f, 0.637f, 0.457f, -0.665f, 0.529f }; + int lda = 3; + float B[] = { -0.055f, 0.803f, -0.981f, -0.627f, 0.147f, -0.656f, -0.824f, -0.366f, -0.445f, -0.151f, 0.686f, -0.368f }; + int ldb = 2; + float B_expected[] = { 0.156354f, 0.078881f, -0.208608f, 0.143709f, 0.219569f, 0.211768f, -0.204943f, -0.415655f, 0.191227f, 0.0071854f, 0.136999f, 0.0773624f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1756) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1756) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.623f, -0.129f, -0.419f, -0.006f, 0.21f, -0.165f, 0.218f, 0.915f, 0.736f, 0.07f, 0.502f, -0.809f, 0.242f, -0.015f, 0.67f, -0.956f, 0.153f, 0.365f }; + int lda = 3; + float B[] = { -0.927f, 0.383f, -0.471f, 0.443f, -0.731f, -0.949f, -0.142f, -0.65f, 0.159f, -0.624f, -0.822f, 0.107f }; + int ldb = 2; + float B_expected[] = { 0.2398f, -0.2076f, 0.097f, -0.18f, 0.212478f, 0.297146f, 0.065877f, 0.255638f, 0.359717f, -0.0280276f, 0.426852f, -0.164392f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1757) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1757) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.628f, -0.771f, 0.827f, -0.979f, 0.395f, -0.166f, 0.88f, 0.958f }; + int lda = 2; + float B[] = { 0.297f, 0.49f, 0.425f, -0.386f, 0.672f, 0.992f, -0.077f, 0.761f, 0.393f, -0.605f, -0.273f, 0.725f }; + int ldb = 3; + float B_expected[] = { 0.177165f, -0.0328107f, -0.0662201f, -0.167954f, 0.366541f, -0.0872256f, -0.2721f, -0.389113f, -0.0674816f, 0.293174f, -0.249446f, -0.709453f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1758) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1758) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.876f, 0.752f, -0.148f, 0.972f, -0.508f, -0.752f, -0.861f, 0.074f }; + int lda = 2; + float B[] = { 0.878f, -0.987f, -0.896f, 0.519f, -0.355f, -0.117f, 0.329f, 0.068f, -0.644f, 0.344f, -0.187f, -0.343f }; + int ldb = 3; + float B_expected[] = { -0.1647f, 0.3839f, 0.2169f, -0.2453f, 0.1182f, -0.0004f, 0.292026f, 0.115771f, -0.111733f, -0.342122f, 0.0725176f, -0.0306312f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1759) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1759) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.072f, -0.966f, 0.648f, 0.43f, -0.623f, -0.221f, -0.622f, 0.977f }; + int lda = 2; + float B[] = { 0.0f, 0.028f, 0.857f, -0.171f, -0.933f, 0.159f, 0.315f, -0.297f, -0.864f, 0.519f, -0.601f, -0.119f }; + int ldb = 3; + float B_expected[] = { 0.0216306f, -0.0927642f, -0.225266f, -0.0253344f, 0.0408658f, 0.302549f, 0.158132f, -0.0117036f, -0.365472f, -0.0519459f, -0.143387f, -0.172603f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1760) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1760) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.903f, -0.972f, -0.812f, 0.605f, 0.085f, -0.025f, -0.443f, 0.518f }; + int lda = 2; + float B[] = { -0.725f, -0.451f, 0.779f, 0.969f, 0.25f, 0.021f, 0.029f, -0.382f, 0.022f, 0.957f, 0.704f, 0.832f }; + int ldb = 3; + float B_expected[] = { 0.26217f, 0.073525f, -0.332173f, -0.239574f, -0.097644f, -0.003892f, 0.0295f, 0.1175f, -0.1023f, -0.2849f, -0.2944f, -0.1792f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1761) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1761) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.322f, -0.981f, 0.193f, -0.604f, 0.87f, -0.384f, 0.463f, -0.502f }; + int lda = 2; + float B[] = { -0.447f, 0.21f, 0.928f, -0.496f, 0.889f, -0.354f, -0.258f, -0.149f, 0.98f, -0.958f, 0.106f, -0.579f }; + int ldb = 2; + float B_expected[] = { 0.0692355f, 0.14563f, -0.0874638f, -0.0532654f, -0.116915f, -0.289728f, -0.242902f, 0.136003f, -0.314257f, -0.318533f, -0.400862f, 0.357622f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1762) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1762) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.924f, -0.553f, 0.985f, -0.793f, 0.406f, 0.741f, -0.956f, 0.945f }; + int lda = 2; + float B[] = { 0.736f, -0.81f, 0.028f, 0.474f, 0.14f, -0.03f, -0.756f, 0.923f, -0.515f, 0.532f, -0.321f, 0.326f }; + int ldb = 2; + float B_expected[] = { -0.1398f, 0.3166f, 0.122042f, 0.0927314f, -0.039f, 0.023f, 0.135709f, -0.314263f, 0.1013f, -0.2111f, -0.0515973f, -0.29067f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1763) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1763) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.04f, -0.41f, -0.643f, 0.988f, 0.86f, -0.281f, -0.017f, 0.389f }; + int lda = 2; + float B[] = { 0.204f, 0.524f, -0.558f, -0.736f, 0.26f, -0.202f, -0.757f, 0.346f, 0.917f, 0.541f, -0.108f, -0.965f }; + int ldb = 2; + float B_expected[] = { 0.059601f, -0.396251f, 0.060088f, -0.096554f, -0.338942f, -0.0950055f, -0.073098f, -0.071831f, 0.208251f, -0.444353f, 0.106223f, -0.05488f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1764) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1764) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.375f, 0.153f, -0.343f, -0.742f, 0.563f, 0.473f, 0.451f, -0.433f }; + int lda = 2; + float B[] = { -0.804f, -0.016f, -0.715f, -0.902f, -0.89f, 0.155f, -0.408f, 0.419f, 0.078f, -0.691f, -0.717f, -0.637f }; + int ldb = 2; + float B_expected[] = { -0.0094443f, 0.0821961f, 0.3047f, 0.1991f, 0.347432f, -0.0186595f, 0.0805f, -0.1665f, -0.138523f, 0.381015f, 0.2788f, 0.1194f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1765) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1765) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.867f, -0.597f, -0.577f, 0.735f, 0.827f, -0.104f, -0.861f, -0.802f, -0.288f, 0.293f, 0.593f, 0.228f, -0.469f, 0.942f, 0.193f, 0.591f, 0.241f, 0.382f }; + int lda = 3; + float B[] = { -0.812f, -0.874f, -0.18f, -0.81f, 0.023f, 0.352f, 0.559f, 0.237f, -0.835f, 0.037f, -0.762f, 0.782f }; + int ldb = 3; + float B_expected[] = { -0.331628f, -0.278177f, -0.0214727f, -0.156013f, -0.0496067f, -0.0088131f, 0.119788f, -0.469291f, -0.0804714f, -0.263663f, -0.0824792f, -0.132356f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1766) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1766) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.258f, -0.812f, -0.858f, -0.107f, -0.151f, 0.785f, 0.717f, 0.992f, -0.649f, -0.242f, -0.454f, 0.916f, 0.86f, 0.834f, -0.244f, 0.391f, 0.818f, -0.714f }; + int lda = 3; + float B[] = { 0.163f, 0.441f, 0.54f, 0.679f, 0.071f, -0.76f, 0.345f, -0.956f, 0.654f, -0.217f, -0.892f, 0.106f }; + int ldb = 3; + float B_expected[] = { 0.296566f, -0.0905963f, -0.0393822f, -0.306541f, 0.0547f, 0.2351f, -0.0059345f, 0.0071855f, -0.402014f, -0.049978f, 0.257f, -0.121f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1767) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1767) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.525f, 0.182f, 0.851f, -0.348f, -0.046f, 0.839f, -0.045f, -0.149f, -0.992f, 0.588f, -0.01f, -0.409f, 0.527f, 0.263f, -0.509f, -0.026f, 0.284f, 0.507f }; + int lda = 3; + float B[] = { 0.909f, 0.216f, 0.38f, 0.198f, -0.412f, -0.102f, -0.456f, 0.079f, 0.504f, -0.782f, -0.88f, 0.079f }; + int ldb = 3; + float B_expected[] = { -0.149757f, 0.0672651f, 0.129501f, 0.054878f, -0.0469462f, 0.0277224f, 0.0550599f, -0.0598423f, 0.244521f, -0.217471f, 0.0955519f, -0.37895f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1768) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1768) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.893f, -0.758f, 0.145f, 0.623f, -0.018f, -0.733f, -0.144f, -0.192f, 0.53f, 0.773f, -0.771f, 0.36f, 0.932f, -0.771f, 0.997f, -0.671f, 0.574f, -0.771f }; + int lda = 3; + float B[] = { 0.592f, 0.985f, -0.62f, -0.095f, -0.344f, -0.607f, 0.759f, 0.085f, -0.609f, 0.068f, -0.084f, -0.575f }; + int ldb = 3; + float B_expected[] = { -0.2761f, -0.2363f, 0.280628f, -0.052484f, 0.306154f, -0.187624f, -0.2362f, 0.0504f, 0.200236f, -0.133908f, 0.0536278f, 0.0659354f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1769) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1769) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.503f, -0.057f, -0.581f, -0.77f, -0.907f, -0.843f, 0.56f, -0.554f, 0.054f, 0.988f, 0.868f, -0.627f, 0.645f, -0.246f, -0.958f, 0.66f, 0.956f, 0.99f }; + int lda = 3; + float B[] = { 0.282f, -0.442f, 0.564f, -0.691f, -0.743f, 0.113f, -0.395f, 0.312f, -0.167f, -0.568f, 0.508f, 0.912f }; + int ldb = 2; + float B_expected[] = { 0.180092f, 0.260648f, -0.045069f, -0.102868f, -0.0964434f, -0.432702f, -0.0404678f, 0.280779f, 0.254359f, 0.0411062f, -0.453454f, 0.0281672f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1770) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1770) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { -0.851f, 0.296f, -0.683f, -0.53f, 0.38f, -0.837f, 0.977f, 0.189f, -0.624f, -0.664f, 0.73f, -0.882f, 0.105f, -0.868f, 0.362f, -0.006f, -0.435f, 0.757f }; + int lda = 3; + float B[] = { -0.259f, -0.091f, 0.606f, -0.983f, -0.238f, 0.057f, 0.358f, 0.18f, -0.71f, 0.058f, 0.511f, 0.717f }; + int ldb = 2; + float B_expected[] = { 0.241746f, 0.119591f, -0.0907286f, 0.148899f, 0.141237f, -0.0716576f, -0.205866f, -0.078918f, 0.2072f, -0.0884f, -0.225f, -0.164f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1771) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1771) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.956f, 0.972f, 0.771f, 0.187f, 0.948f, 0.303f, -0.854f, 0.123f, 0.704f, 0.152f, 0.347f, 0.595f, -0.865f, 0.75f, -0.041f, -0.572f, 0.749f, 0.216f }; + int lda = 3; + float B[] = { -0.821f, -0.098f, 0.347f, -0.639f, 0.314f, -0.009f, -0.725f, 0.45f, 0.536f, 0.801f, 0.431f, 0.936f }; + int ldb = 2; + float B_expected[] = { 0.193607f, -0.29931f, 0.18163f, 0.255513f, 0.127098f, -0.0503344f, 0.101243f, 0.0097718f, -0.0060322f, -0.148016f, -0.251411f, -0.0777231f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1772) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1772) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {-0.3f, 0.1f}; + float A[] = { 0.78f, -0.205f, 0.073f, -0.859f, 0.568f, -0.599f, -0.947f, -0.514f, 0.835f, 0.176f, 0.27f, -0.617f, 0.171f, -0.074f, 0.939f, -0.469f, -0.471f, 0.25f }; + int lda = 3; + float B[] = { -0.279f, 0.16f, -0.495f, 0.658f, 0.071f, 0.557f, -0.116f, 0.095f, -0.104f, 0.503f, -0.775f, -0.03f }; + int ldb = 2; + float B_expected[] = { 0.0677f, -0.0759f, 0.0827f, -0.2469f, -0.0068598f, -0.107386f, 0.243424f, 0.0129156f, 0.142748f, -0.254568f, 0.461939f, -0.154419f }; + cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1773) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1773) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.463, 0.033, -0.929, 0.949, 0.864, 0.986, 0.393, 0.885 }; + int lda = 2; + double B[] = { -0.321, -0.852, -0.337, -0.175, 0.607, -0.613, 0.688, 0.973, -0.331, -0.35, 0.719, -0.553 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1774) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1774) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.608, -0.393, 0.921, 0.282, -0.857, -0.286, -0.31, -0.057 }; + int lda = 2; + double B[] = { -0.548, 0.728, 0.391, -0.506, 0.186, 0.97, -0.435, 0.375, -0.995, -0.496, 0.99, 0.186 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1775) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1775) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.253, 0.969, 0.654, -0.016, -0.774, -0.11, -0.101, -0.287 }; + int lda = 2; + double B[] = { -0.34, -0.268, -0.52, 0.021, -0.875, 0.98, 0.255, 0.564, -0.478, -0.818, -0.043, 0.224 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1776) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1776) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.64, -0.222, 0.922, 0.417, -0.724, 0.012, 0.418, 0.39 }; + int lda = 2; + double B[] = { 0.619, -0.024, -0.068, 0.219, 0.374, -0.937, 0.79, 0.166, -0.92, 0.753, -0.017, 0.076 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1777) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1777) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.57, 0.987, 0.116, -0.691, -0.603, -0.778, 0.14, -0.073 }; + int lda = 2; + double B[] = { 0.421, -0.055, 0.92, 0.664, 0.835, 0.861, -0.392, -0.897, -0.346, 0.516, -0.068, -0.156 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1778) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1778) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.754, 0.904, 0.089, 0.206, 0.974, -0.946, -0.55, -0.675 }; + int lda = 2; + double B[] = { -0.42, -0.372, 0.628, 0.148, 0.344, -0.924, -0.802, -0.307, 0.427, 0.116, 0.916, -0.384 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1779) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1779) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.152, -0.898, -0.024, 0.719, 0.992, -0.841, 0.901, 0.202 }; + int lda = 2; + double B[] = { 0.243, -0.811, 0.68, 0.118, 0.946, -0.632, 0.729, -0.942, 0.308, 0.507, -0.838, 0.594 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1780) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1780) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.119, -0.849, 0.425, -0.273, -0.918, 0.196, -0.871, -0.39 }; + int lda = 2; + double B[] = { 0.709, 0.33, -0.207, 0.012, -0.017, 0.787, -0.385, 0.739, -0.874, 0.188, -0.039, 0.692 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1781) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1781) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.837, -0.603, 0.755, -0.92, 0.892, -0.009, -0.741, 0.271, -0.325, -0.861, 0.902, -0.088, 0.091, 0.256, 0.209, -0.724, 0.28, -0.604 }; + int lda = 3; + double B[] = { 0.455, -0.215, -0.668, 0.917, -0.985, 0.477, 0.564, -0.524, -0.202, -0.53, -0.88, -0.688 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1782) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1782) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.991, 0.253, 0.813, 0.497, -0.268, 0.623, 0.82, -0.946, -0.883, 0.333, -0.265, -0.371, 0.131, -0.812, -0.365, 0.45, 0.929, -0.704 }; + int lda = 3; + double B[] = { 0.783, -0.756, 0.635, 0.56, 0.434, -0.831, -0.34, -0.531, -0.277, 0.874, 0.986, 0.157 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1783) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1783) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.265, -0.592, -0.721, -0.838, -0.952, 0.115, -0.34, -0.789, -0.265, -0.779, -0.676, 0.048, 0.78, -0.272, -0.651, 0.272, 0.8, -0.693 }; + int lda = 3; + double B[] = { -0.609, 0.028, -0.818, 0.289, -0.41, -0.25, -0.917, 0.463, 0.942, 0.692, -0.516, 0.378 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1784) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1784) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.962, 0.945, -0.58, -0.358, -0.769, 0.751, -0.068, -0.321, 0.938, 0.183, -0.17, 0.251, -0.248, -0.092, -0.818, 0.928, -0.059, -0.222 }; + int lda = 3; + double B[] = { 0.015, -0.852, -0.565, 0.16, -0.095, 0.073, 0.405, 0.509, 0.082, -0.478, -0.365, 0.824 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1785) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1785) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.616, 0.669, 0.323, -0.238, 0.153, 0.891, -0.4, 0.996, 0.689, -0.736, -0.259, -0.707, 0.993, 0.13, -0.829, -0.564, -0.09, 0.118 }; + int lda = 3; + double B[] = { 0.113, 0.724, 0.148, -0.309, -0.833, -0.791, 0.354, -0.528, 0.313, 0.421, 0.28, 0.371 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1786) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1786) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.957, -0.713, 0.976, 0.183, -0.145, -0.858, -0.497, -0.605, -0.742, 0.686, 0.272, 0.83, -0.606, -0.099, -0.807, 0.767, 0.254, 0.244 }; + int lda = 3; + double B[] = { -0.124, -0.19, 0.665, -0.74, 0.505, -0.194, 0.588, -0.421, -0.727, 0.308, -0.802, -0.278 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1787) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1787) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.649, 0.856, 0.969, 0.382, 0.963, 0.567, 0.599, 0.018, -0.924, 0.578, -0.531, -0.091, -0.454, -0.834, 0.97, -0.126, -0.859, 0.879 }; + int lda = 3; + double B[] = { 0.35, 0.824, -0.084, 0.662, -0.752, 0.872, 0.129, 0.969, -0.539, 0.907, 0.316, -0.675 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1788) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1788) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.315, -0.459, 0.327, -0.132, -0.283, 0.173, -0.356, -0.427, 0.508, 0.347, -0.804, -0.849, 0.779, 0.673, 0.019, -0.869, 0.999, -0.338 }; + int lda = 3; + double B[] = { 0.678, -0.171, 0.136, -0.268, -0.578, -0.431, 0.978, -0.749, 0.333, -0.757, 0.658, 0.456 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1789) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1789) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.532, -0.877, 0.308, -0.807, 0.013, 0.891, 0.077, -0.004 }; + int lda = 2; + double B[] = { 0.634, -0.969, 0.228, -0.097, 0.419, 0.903, 0.21, 0.313, -0.819, -0.028, 0.574, -0.762 }; + int ldb = 3; + double B_expected[] = { 0.004051, -0.1187101, 0.0148352, -0.0206365, 0.0847859, 0.0569023, 0.0786829, -0.0569289, 0.0212752, -0.007123, 0.0120979, 0.0898923 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1790) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1790) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.77, -0.037, -0.021, -0.831, -0.663, -0.241, -0.273, -0.023 }; + int lda = 2; + double B[] = { 0.354, -0.95, -0.944, -0.497, 0.741, 0.084, -0.3, 0.023, -0.056, 0.063, -0.117, -0.498 }; + int ldb = 3; + double B_expected[] = { 0.095, 0.0354, 0.0497, -0.0944, -0.0084, 0.0741, 0.0251224, -0.1096884, -0.0857901, -0.0449183, 0.1115535, -0.0062757 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1791) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1791) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.623, 0.379, 0.903, -0.378, -0.088, 0.24, -0.964, 0.558 }; + int lda = 2; + double B[] = { -0.137, 0.706, 0.457, 0.399, -0.69, -0.7, 0.34, 0.479, 0.539, -0.133, 0.876, -0.347 }; + int ldb = 3; + double B_expected[] = { 0.0452313, -0.0327103, -0.006569, -0.0451444, -0.0415366, 0.0701362, 0.0272036, -0.0595042, -0.0428974, -0.0445382, -0.0823316, -0.0650838 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1792) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1792) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.253, 0.657, 0.636, 0.827, -0.107, 0.353, 0.425, -0.365 }; + int lda = 2; + double B[] = { -0.402, -0.409, 0.421, -0.333, -0.771, -0.099, 0.697, -0.812, -0.653, 0.823, 0.994, 0.998 }; + int ldb = 3; + double B_expected[] = { 0.0076075, -0.0189943, 0.065157, 0.0200352, -0.0145096, -0.1229652, 0.0812, 0.0697, -0.0823, -0.0653, -0.0998, 0.0994 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1793) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1793) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.57, -0.805, -0.66, -0.421, 0.643, -0.534, -0.988, -0.581 }; + int lda = 2; + double B[] = { -0.279, -0.253, 0.976, -0.051, 0.294, 0.451, 0.187, -0.177, 0.31, -0.714, -0.104, -0.177 }; + int ldb = 2; + double B_expected[] = { -0.0368805, -0.0044635, 0.0530361, -0.1308418, 0.049374, 0.0195475, -0.0199226, 0.0142283, -0.015743, -0.075147, 0.0389342, -0.0182031 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1794) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1794) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.594, 0.273, 0.457, 0.295, 0.434, -0.227, -0.662, 0.623 }; + int lda = 2; + double B[] = { -0.582, -0.581, 0.259, -0.833, -0.864, -0.284, 0.965, -0.459, -0.539, -0.551, -0.969, 0.09 }; + int ldb = 2; + double B_expected[] = { 0.0581, -0.0582, 0.095304, -0.0125475, 0.0284, -0.0864, 0.0386128, 0.0525556, 0.0551, -0.0539, 0.0026781, -0.1328003 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1795) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1795) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.398, 0.323, 0.31, 0.718, 0.181, 0.665, 0.402, 0.317 }; + int lda = 2; + double B[] = { 0.812, -0.244, -0.415, 0.602, 0.901, -0.017, 0.786, -0.119, 0.448, -0.75, 0.851, 0.172 }; + int ldb = 2; + double B_expected[] = { -0.0053814, -0.0158898, -0.0110449, -0.0357664, -0.0811715, 0.0693191, -0.0201324, 0.0353695, -0.0510542, 0.0560868, -0.0338911, 0.0287578 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1796) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1796) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.265, -0.578, 0.218, -0.093, -0.172, 0.414, 0.448, 0.696 }; + int lda = 2; + double B[] = { 0.02, -0.254, 0.152, 0.304, 0.289, 0.247, 0.705, 0.419, -0.735, 0.788, -0.942, -0.71 }; + int ldb = 2; + double B_expected[] = { 0.0201864, 0.0081408, -0.0304, 0.0152, -0.0272777, 0.0481657, -0.0419, 0.0705, -0.0720826, -0.1006386, 0.071, -0.0942 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1797) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1797) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.971, 0.532, 0.175, 0.455, 0.191, 0.493, 0.882, -0.944, 0.358, 0.142, -0.065, 0.632, -0.319, -0.101, 0.578, 0.476, -0.773, 0.912 }; + int lda = 3; + double B[] = { 0.018, -0.131, 0.964, -0.467, -0.729, -0.794, 0.874, 0.361, 0.744, -0.958, 0.162, 0.555 }; + int ldb = 3; + double B_expected[] = { 0.0271781, 0.0720558, 0.0439416, 0.0960619, 0.0051086, 0.1287645, -0.117224, 0.0980019, 0.0171007, 0.0041098, 0.0281271, -0.0631386 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1798) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1798) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.506, -0.263, -0.994, 0.681, 0.889, -0.5, -0.912, 0.741, -0.329, -0.912, 0.332, -0.001, -0.484, 0.942, -0.728, -0.104, -0.216, 0.679 }; + int lda = 3; + double B[] = { 0.562, -0.354, 0.742, -0.177, -0.627, -0.762, 0.476, 0.758, 0.675, -0.504, -0.33, 0.186 }; + int ldb = 3; + double B_expected[] = { 0.0036678, -0.0993414, 0.0429357, 0.0533074, 0.0762, -0.0627, -0.2049005, -0.0052096, 0.0441918, 0.0565626, -0.0186, -0.033 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1799) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1799) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.341, -0.27, 0.001, 0.939, 0.714, 0.803, -0.508, -0.331, -0.563, -0.725, -0.902, -0.793, 0.461, 0.127, -0.597, -0.498, 0.394, -0.019 }; + int lda = 3; + double B[] = { 0.015, 0.803, 0.497, 0.667, 0.803, 0.775, 0.026, 0.908, 0.535, -0.111, 0.379, -0.036 }; + int ldb = 3; + double B_expected[] = { 0.0277873, 0.0211695, 0.1148735, 0.0461937, -0.0016476, 0.0271498, 0.0316648, 0.0236294, 0.0795252, -0.009434, -0.0200342, -0.0329361 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1800) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1800) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.132, 0.903, -0.235, -0.294, -0.09, 0.74, -0.707, -0.855, 0.632, 0.543, -0.558, -0.416, -0.99, -0.088, -0.189, -0.371, -0.844, -0.737 }; + int lda = 3; + double B[] = { -0.257, 0.159, 0.689, 0.785, 0.398, -0.128, -0.098, -0.735, -0.307, 0.032, 0.517, 0.049 }; + int ldb = 3; + double B_expected[] = { -0.0159, -0.0257, -0.0892322, 0.1006644, 0.0666778, 0.0827436, 0.0735, -0.0098, -0.0635435, -0.0866139, -0.0893123, 0.0619235 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1801) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1801) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.993, 0.709, 0.225, -0.704, -0.396, 0.656, -0.588, -0.085, -0.024, 0.264, -0.988, -0.67, 0.665, -0.165, -0.778, -0.43, 0.71, -0.35 }; + int lda = 3; + double B[] = { 0.321, 0.614, 0.058, 0.983, 0.153, -0.647, 0.342, -0.518, -0.071, -0.533, -0.424, 0.283 }; + int ldb = 2; + double B_expected[] = { -0.0861992, -0.0396692, -0.155091, -0.1119744, -0.0501124, -0.0006816, -0.0064866, 0.0580106, 0.035358, -0.023696, -0.034933, -0.020199 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1802) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1802) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.034, -0.02, -0.401, -0.892, 0.329, -0.799, -0.018, 0.564, 0.095, 0.965, -0.105, 0.756, -0.583, -0.706, -0.436, -0.145, 0.921, 0.416 }; + int lda = 3; + double B[] = { 0.972, 0.157, -0.029, 0.674, 0.914, 0.434, 0.132, -0.116, -0.907, 0.316, -0.423, 0.321 }; + int ldb = 2; + double B_expected[] = { -0.1120798, 0.1462649, -0.0862031, 0.0507283, -0.0427739, 0.1355272, 0.0194621, 0.0362973, -0.0316, -0.0907, -0.0321, -0.0423 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1803) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1803) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.195, -0.36, 0.834, -0.505, -0.87, -0.787, 0.997, 0.965, -0.046, -0.591, 0.082, 0.552, 0.414, -0.013, -0.048, -0.766, 0.728, 0.088 }; + int lda = 3; + double B[] = { -0.916, -0.162, -0.863, 0.67, -0.079, -0.27, -0.191, 0.995, 0.981, -0.25, -0.149, 0.248 }; + int ldb = 2; + double B_expected[] = { -0.036135, 0.01203, -0.018003, 0.0409485, -0.0386581, -0.100169, -0.1061706, 0.0215439, -0.0700412, 0.1548156, -0.0239871, 0.0582902 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1804) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1804) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.553, -0.63, -0.079, 0.351, 0.865, -0.062, 0.165, -0.634, -0.513, 0.216, -0.521, 0.349, 0.54, 0.545, -0.719, -0.306, 0.501, 0.757 }; + int lda = 3; + double B[] = { -0.311, 0.088, -0.328, 0.977, 0.659, -0.06, -0.276, 0.872, -0.734, -0.01, -0.668, -0.327 }; + int ldb = 2; + double B_expected[] = { -0.0088, -0.0311, -0.0977, -0.0328, 0.0176113, 0.0652681, -0.0679689, -0.0593015, -0.0346653, -0.1319958, 0.0012195, -0.1051678 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1805) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1805) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.993, -0.018, 0.162, -0.222, 0.188, 0.672, -0.675, -0.345 }; + int lda = 2; + double B[] = { 0.476, -0.009, 0.725, -0.925, -0.245, 0.308, 0.515, 0.1, -0.072, -0.757, 0.212, 0.571 }; + int ldb = 3; + double B_expected[] = { 0.000369, 0.47283, 0.905475, 0.736575, -0.301434, -0.248829, -0.214389, -0.303015, -0.497235, 0.632565, 0.316779, -0.448161 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1806) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1806) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.78, 0.346, -0.663, -0.86, -0.496, -0.154, 0.356, 0.228 }; + int lda = 2; + double B[] = { 0.578, 0.492, 0.775, 0.353, 0.198, -0.519, -0.52, -0.677, -0.438, 0.313, 0.941, -0.56 }; + int ldb = 3; + double B_expected[] = { -0.492, 0.578, -0.353, 0.775, 0.519, 0.198, 0.506116, -1.326334, -0.745461, -1.255405, 0.045623, 1.256066 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1807) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1807) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.455, 0.442, 0.062, 0.815, 0.03, 0.55, 0.592, -0.487 }; + int lda = 2; + double B[] = { -0.451, 0.01, 0.174, -0.775, 0.22, -0.644, 0.858, -0.004, 0.59, -0.395, -0.943, 0.824 }; + int ldb = 3; + double B_expected[] = { 0.268128, -0.177245, 0.765883, -0.46293, -0.15311, 0.240362, -0.415478, 0.509884, -0.05349, 0.541645, -0.028567, -0.959544 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1808) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1808) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.268, -0.886, -0.805, 0.875, 0.481, 0.095, -0.057, 0.605 }; + int lda = 2; + double B[] = { 0.708, -0.638, 0.408, -0.512, 0.175, 0.181, -0.919, -0.126, 0.708, -0.51, 0.212, 0.114 }; + int ldb = 3; + double B_expected[] = { 0.611301, 0.253991, 0.82457, 0.700098, -0.215694, 0.287802, 0.126, -0.919, 0.51, 0.708, -0.114, 0.212 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1809) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1809) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.881, 0.555, 0.774, 0.148, -0.915, 0.336, 0.103, 0.381 }; + int lda = 2; + double B[] = { 0.163, 0.963, -0.017, 0.921, 0.809, 0.846, 0.905, -0.43, 0.894, -0.371, -0.988, -0.487 }; + int ldb = 2; + double B_expected[] = { -0.757938, 0.678068, 0.834573, 0.523573, -0.296331, 1.182259, 1.435009, -0.526594, 0.823021, 0.581709, -0.365348, -1.229977 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1810) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1810) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.719, -0.513, 0.169, -0.524, 0.352, 0.823, -0.741, -0.355 }; + int lda = 2; + double B[] = { 0.717, 0.052, -0.777, 0.277, -0.962, 0.894, 0.905, -0.216, -0.707, 0.016, 0.481, 0.935 }; + int ldb = 2; + double B_expected[] = { -0.052, 0.717, 0.294787, -0.48182, -0.894, -0.962, -0.890414, 1.302138, -0.016, -0.707, -1.522493, 0.245304 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1811) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1811) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.501, -0.136, -0.502, 0.669, -0.498, -0.4, -0.518, 0.833 }; + int lda = 2; + double B[] = { -0.385, 0.88, 0.726, 0.911, 0.839, 0.573, -0.881, -0.517, -0.861, -0.278, 0.941, 0.822 }; + int ldb = 2; + double B_expected[] = { 0.554496, -0.067558, 1.076656, 0.382795, -1.2501, 0.4388, -1.001679, 0.025697, 1.298547, -0.316017, 1.209649, 0.197288 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1812) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1812) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.049, 0.641, -0.9, 0.246, -0.734, -0.686, 0.76, -0.869 }; + int lda = 2; + double B[] = { -0.37, 0.206, -0.731, -0.573, 0.638, -0.417, -0.29, -0.719, 0.107, -0.333, 0.556, 0.124 }; + int ldb = 2; + double B_expected[] = { -0.901526, 0.146942, 0.573, -0.731, -0.30144, 0.722126, 0.719, -0.29, 0.581376, -0.362896, -0.124, 0.556 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1813) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1813) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.553, 0.338, 0.229, -0.828, -0.594, -0.036, -0.335, -0.249, 0.083, -0.197, 0.995, 0.85, -0.988, 0.596, -0.254, 0.179, 0.441, -0.859 }; + int lda = 3; + double B[] = { -0.058, -0.225, 0.884, 0.348, 0.123, -0.151, 0.891, 0.711, -0.792, 0.552, 0.033, -0.178 }; + int ldb = 3; + double B_expected[] = { -0.800945, -0.261458, 0.051763, -0.001149, -0.039066, 0.183952, 0.330423, 0.081423, 0.315368, -0.292945, 0.050151, 0.167455 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1814) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1814) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.257, -0.565, -0.123, 0.129, 0.817, -0.516, -0.613, -0.42, -0.494, 0.122, -0.593, -0.972, -0.695, -0.968, 0.848, -0.2, -0.17, 0.436 }; + int lda = 3; + double B[] = { -0.274, 0.105, -0.899, -0.33, -0.318, -0.096, -0.237, 0.327, 0.046, 0.584, -0.459, -0.182 }; + int ldb = 3; + double B_expected[] = { -0.019041, -0.416263, 0.582168, -0.617114, 0.096, -0.318, 0.136304, -0.448413, -0.245778, 0.495091, 0.182, -0.459 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1815) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1815) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.127, 0.025, 0.036, 0.612, 0.773, 0.953, 0.074, -0.006, 0.373, 0.292, -0.052, -0.319, -0.878, -0.401, 0.486, -0.493, -0.316, 0.003 }; + int lda = 3; + double B[] = { 0.794, -0.666, -0.406, 0.622, -0.512, -0.761, 0.161, -0.137, -0.626, 0.408, 0.536, 0.66 }; + int ldb = 3; + double B_expected[] = { -0.064732, -0.117488, -0.306038, 0.092938, -1.247288, -0.774519, -0.013374, -0.023872, -0.325804, -0.101626, 0.135651, -0.759197 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1816) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1816) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.724, -0.423, 0.028, 0.043, 0.812, -0.568, 0.294, -0.375, -0.85, -0.119, -0.338, -0.415, 0.976, 0.507, 0.913, 0.697, 0.323, 0.206 }; + int lda = 3; + double B[] = { 0.427, 0.621, -0.212, -0.942, -0.08, 0.416, 0.465, -0.972, -0.529, -0.252, -0.19, 0.073 }; + int ldb = 3; + double B_expected[] = { -0.621, 0.427, 0.599301, -0.319337, -0.093325, -0.198531, 0.972, 0.465, 0.363393, -0.02779, 0.97279, -0.887585 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1817) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1817) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.501, -0.632, 0.663, 0.151, -0.523, -0.71, -0.811, 0.8, -0.06, 0.994, -0.962, 0.827, -0.543, 0.719, -0.264, -0.942, 0.365, 0.051 }; + int lda = 3; + double B[] = { -0.974, 0.094, -0.533, 0.633, -0.982, -0.383, -0.297, 0.734, -0.092, -0.15, 0.215, -0.232 }; + int ldb = 2; + double B_expected[] = { -0.675337, -0.115274, 0.406006, -0.122575, -0.952024, -0.156194, -0.514956, 0.9092, 0.050058, -0.04123, 0.095645, 0.066643 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1818) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1818) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { 0.669, 0.332, -0.661, 0.611, 0.279, -0.133, -0.033, 0.06, 0.788, -0.407, -0.644, 0.958, 0.247, -0.161, 0.125, -0.184, 0.041, -0.045 }; + int lda = 3; + double B[] = { -0.603, 0.88, 0.668, -0.152, 0.082, 0.033, 0.733, -0.557, 0.722, 0.024, -0.754, 0.458 }; + int ldb = 2; + double B_expected[] = { -0.996161, -0.429256, 0.185867, 0.350415, -0.168848, 0.167834, 0.638486, 0.554478, -0.024, 0.722, -0.458, -0.754 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1819) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1819) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.91, 0.05, -0.944, 0.748, -0.712, 0.619, -0.28, -0.906, 0.314, 0.943, -0.719, -0.983, 0.474, -0.115, -0.859, 0.837, 0.364, -0.164 }; + int lda = 3; + double B[] = { -0.278, -0.34, 0.584, 0.43, -0.794, -0.465, -0.65, 0.461, 0.24, 0.003, 0.948, -0.778 }; + int ldb = 2; + double B_expected[] = { -0.3233, 0.23598, 0.4205, -0.50994, -1.131636, -0.679699, 0.085048, 0.000967, -0.008447, 1.102325, 1.765785, 0.337213 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1820) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1820) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 1}; + double A[] = { -0.39, -0.916, 0.257, -0.082, -0.802, 0.215, -0.155, 0.911, -0.099, 0.41, 0.057, 0.105, 0.94, -0.17, -0.714, -0.861, 0.292, -0.231 }; + int lda = 3; + double B[] = { -0.453, -0.542, 0.135, 0.518, -0.199, 0.776, 0.784, -0.28, -0.499, -0.377, -0.795, -0.965 }; + int ldb = 2; + double B_expected[] = { 0.542, -0.453, -0.518, 0.135, -0.59956, -0.270977, 0.135804, 0.776219, -0.220206, -0.182087, 1.507741, -0.776612 }; + cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1821) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1821) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_trmv.c b/gsl-1.9/cblas/test_trmv.c new file mode 100644 index 0000000..312df89 --- /dev/null +++ b/gsl-1.9/cblas/test_trmv.c @@ -0,0 +1,1739 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_trmv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 814)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 815)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 816)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 817)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 818)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 819)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.136206f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 820)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.987f }; + float X[] = { -0.138f }; + int incX = -1; + float x_expected[] = { -0.138f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 821)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 822)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 823)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 824)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 825)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 826)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 827)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { -0.152327f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 828)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.329f }; + float X[] = { 0.463f }; + int incX = -1; + float x_expected[] = { 0.463f }; + cblas_strmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strmv(case 829)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 830)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 831)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 832)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 833)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 834)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 835)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { 0.385671 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 836)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.429 }; + double X[] = { -0.899 }; + int incX = -1; + double x_expected[] = { -0.899 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 837)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 838)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 839)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 840)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 841)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 842)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 843)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.161664 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 844)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.842 }; + double X[] = { 0.192 }; + int incX = -1; + double x_expected[] = { 0.192 }; + cblas_dtrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrmv(case 845)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 846) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 846) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 847) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 847) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 848) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 848) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 849) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 849) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 850) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 850) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 851) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 851) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { -0.038016f, -0.133218f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 852) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 852) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { -0.162f, -0.108f }; + float X[] = { 0.542f, 0.461f }; + int incX = -1; + float x_expected[] = { 0.542f, 0.461f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 853) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 853) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 854) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 854) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 855) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 855) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 856) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 856) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 857) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 857) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 858) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 858) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 859) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 859) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.418216f, 0.061332f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 860) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 860) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.547f, 0.583f }; + float X[] = { -0.302f, 0.434f }; + int incX = -1; + float x_expected[] = { -0.302f, 0.434f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 861) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 861) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 862) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 862) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 863) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 863) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 864) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 864) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 865) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 865) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 866) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 866) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 867) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 867) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.178848f, 0.044136f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 868) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 868) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.216f, 0.192f }; + float X[] = { -0.564f, -0.297f }; + int incX = -1; + float x_expected[] = { -0.564f, -0.297f }; + cblas_ctrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrmv(case 869) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrmv(case 869) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 870) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 870) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 871) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 871) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 872) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 872) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 873) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 873) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 874) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 874) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 875) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 875) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { 0.125587, 0.638297 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 876) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 876) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.693, -0.22 }; + double X[] = { -0.101, 0.889 }; + int incX = -1; + double x_expected[] = { -0.101, 0.889 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 877) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 877) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 878) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 878) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 879) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 879) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 880) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 880) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 881) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 881) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 882) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 882) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 883) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 883) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.172171, -0.093192 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 884) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 884) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.216, -0.623 }; + double X[] = { 0.048, 0.293 }; + int incX = -1; + double x_expected[] = { 0.048, 0.293 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 885) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 885) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 886) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 886) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 887) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 887) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 888) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 888) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 889) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 889) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 890) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 890) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 891) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 891) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.009338, -0.705318 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 892) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 892) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.345, -0.851 }; + double X[] = { -0.708, 0.298 }; + int incX = -1; + double x_expected[] = { -0.708, 0.298 }; + cblas_ztrmv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrmv(case 893) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrmv(case 893) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_trsm.c b/gsl-1.9/cblas/test_trsm.c new file mode 100644 index 0000000..eef55b3 --- /dev/null +++ b/gsl-1.9/cblas/test_trsm.c @@ -0,0 +1,3947 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_trsm (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.279f, 0.058f, 0.437f, 0.462f }; + int lda = 2; + float B[] = { 0.578f, 0.473f, -0.34f, -0.128f, 0.503f, 0.2f }; + int ldb = 3; + float B_expected[] = { 0.638784f, 0.440702f, -0.392589f, 0.0831169f, -0.326623f, -0.12987f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1822)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.735f, -0.861f, 0.772f, -0.242f }; + int lda = 2; + float B[] = { -0.793f, -0.162f, -0.844f, 0.143f, -0.379f, -0.46f }; + int ldb = 3; + float B_expected[] = { 0.200963f, 0.146496f, 0.372018f, -0.0429f, 0.1137f, 0.138f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1823)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.498f, 0.777f, -0.913f, 0.779f }; + int lda = 2; + float B[] = { -0.831f, -0.663f, -0.098f, -0.894f, -0.059f, 0.468f }; + int ldb = 3; + float B_expected[] = { -0.500602f, -0.399398f, -0.0590361f, -0.242426f, -0.445379f, -0.249422f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1824)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.543f, 0.095f, -0.933f, -0.669f }; + int lda = 2; + float B[] = { 0.068f, 0.715f, 0.012f, -0.785f, 0.378f, 0.251f }; + int ldb = 3; + float B_expected[] = { -0.0204f, -0.2145f, -0.0036f, 0.216467f, -0.313528f, -0.0786588f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1825)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.75f, 0.777f, -0.025f, 0.572f }; + int lda = 2; + float B[] = { 0.03f, 0.392f, -0.056f, 0.399f, -0.489f, -0.167f }; + int ldb = 2; + float B_expected[] = { -0.0188531f, -0.205594f, 0.0154245f, -0.209266f, 0.19852f, 0.0875874f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1826)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.899f, -0.447f, 0.338f, -0.74f }; + int lda = 2; + float B[] = { 0.964f, -0.104f, -0.199f, 0.503f, -0.386f, -0.764f }; + int ldb = 2; + float B_expected[] = { -0.299746f, 0.0312f, 0.110704f, -0.1509f, 0.0383304f, 0.2292f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1827)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.279f, 0.73f, -0.366f, 0.583f }; + int lda = 2; + float B[] = { -0.572f, 0.75f, 0.603f, 0.697f, 0.908f, 0.119f }; + int ldb = 2; + float B_expected[] = { 0.615054f, -1.15607f, -0.648387f, 0.453212f, -0.976344f, 1.16129f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1828)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.581f, -0.911f, 0.438f, 0.731f }; + int lda = 2; + float B[] = { 0.519f, 0.831f, 0.822f, 0.182f, 0.571f, -0.357f }; + int ldb = 2; + float B_expected[] = { -0.1557f, -0.391143f, -0.2466f, -0.279253f, -0.1713f, -0.0489543f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1829)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.065f, 0.099f, 0.48f, 0.746f, -0.739f, 0.695f, 0.197f, 0.621f, 0.063f }; + int lda = 3; + float B[] = { 0.01f, -0.612f, 0.756f, -0.225f, 0.546f, 0.432f }; + int ldb = 3; + float B_expected[] = { -0.0461538f, -0.254627f, -0.439373f, 1.03846f, 0.360768f, -13.9491f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1830)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.86f, -0.653f, 0.87f, -0.037f, 0.788f, 0.015f, 0.028f, -0.804f, -0.357f }; + int lda = 3; + float B[] = { -0.546f, 0.892f, -0.085f, -0.541f, -0.207f, 0.765f }; + int ldb = 3; + float B_expected[] = { 0.1638f, -0.160639f, -0.114596f, 0.1623f, 0.168082f, -0.373222f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1831)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.872f, -0.35f, 0.518f, -0.8f, -0.13f, -0.832f, 0.426f, 0.195f, -0.735f }; + int lda = 3; + float B[] = { 0.773f, 0.069f, 0.45f, 0.189f, 0.504f, 0.996f }; + int ldb = 3; + float B_expected[] = { 0.0431742f, 0.434741f, 0.183673f, 1.36286f, 1.77287f, 0.406531f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1832)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.053f, -0.132f, -0.515f, -0.411f, 0.134f, 0.657f, 0.072f, -0.007f, -0.34f }; + int lda = 3; + float B[] = { 0.494f, 0.072f, -0.882f, -0.112f, 0.904f, 0.755f }; + int ldb = 3; + float B_expected[] = { -0.175368f, -0.0197478f, 0.2646f, -0.0622068f, -0.272786f, -0.2265f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1833)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { -0.154f, -0.54f, 0.146f, -0.106f, -0.478f, 0.938f, -0.731f, 0.25f, -0.4f }; + int lda = 3; + float B[] = { -0.88f, -0.555f, 0.642f, 0.751f, -0.859f, -0.409f }; + int ldb = 2; + float B_expected[] = { -1.71429f, -1.08117f, 0.783084f, 0.711096f, 2.97803f, 2.11352f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1834)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.249f, -0.451f, -0.781f, 0.157f, -0.02f, 0.57f, 0.309f, -0.159f, 0.266f }; + int lda = 3; + float B[] = { -0.546f, 0.839f, 0.392f, -0.445f, -0.818f, 0.953f }; + int ldb = 2; + float B_expected[] = { 0.1638f, -0.2517f, -0.143317f, 0.173017f, 0.171998f, -0.180615f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1835)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.299f, 0.626f, -0.471f, 0.208f, -0.842f, 0.674f, 0.03f, 0.628f, 0.534f }; + int lda = 3; + float B[] = { 0.831f, -0.997f, -0.366f, 0.307f, -0.426f, 0.806f }; + int ldb = 2; + float B_expected[] = { -0.584851f, 0.816906f, 0.0611706f, -0.25308f, 0.239326f, -0.452809f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1836)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha = -0.3f; + float A[] = { 0.301f, 0.168f, 0.934f, 0.107f, 0.068f, 0.384f, -0.201f, 0.116f, -0.436f }; + int lda = 3; + float B[] = { 0.773f, -0.304f, -0.402f, 0.642f, -0.102f, -0.095f }; + int ldb = 2; + float B_expected[] = { -0.278767f, 0.0987764f, 0.10885f, -0.203544f, 0.0306f, 0.0285f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1837)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.616f, 0.304f, 0.403f, 0.739f }; + int lda = 2; + float B[] = { 0.273f, -0.609f, 0.858f, 0.993f, -0.738f, -0.353f }; + int ldb = 3; + float B_expected[] = { -0.443182f, 0.988636f, -1.39286f, 1.52602f, -1.40534f, 0.0953025f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1838)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.811f, 0.257f, 0.98f, -0.956f }; + int lda = 2; + float B[] = { 0.996f, 0.329f, 0.273f, -0.744f, 0.662f, -0.31f }; + int ldb = 3; + float B_expected[] = { 0.996f, 0.329f, 0.273f, -0.999972f, 0.577447f, -0.380161f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1839)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.845f, 0.064f, 0.29f, -0.291f }; + int lda = 2; + float B[] = { 0.878f, 0.156f, 0.217f, 0.082f, -0.869f, 0.595f }; + int ldb = 3; + float B_expected[] = { 1.13576f, -0.840253f, 0.958527f, -0.281787f, 2.98625f, -2.04467f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1840)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.836f, 0.359f, -0.415f, 0.154f }; + int lda = 2; + float B[] = { 0.652f, 0.614f, 0.922f, -0.063f, 0.313f, -0.316f }; + int ldb = 3; + float B_expected[] = { 0.625855f, 0.743895f, 0.79086f, -0.063f, 0.313f, -0.316f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1841)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.94f, -0.656f, 0.645f, -0.634f }; + int lda = 2; + float B[] = { -0.948f, -0.596f, -0.799f, 0.133f, -0.843f, -0.179f }; + int ldb = 2; + float B_expected[] = { -1.00851f, -0.0859454f, -0.85f, -1.07453f, -0.896809f, -0.630034f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1842)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.332f, 0.705f, -0.792f, -0.033f }; + int lda = 2; + float B[] = { 0.561f, 0.883f, -0.136f, 0.203f, -0.531f, 0.733f }; + int ldb = 2; + float B_expected[] = { 0.561f, 1.32731f, -0.136f, 0.095288f, -0.531f, 0.312448f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1843)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.991f, 0.614f, 0.108f, -0.125f }; + int lda = 2; + float B[] = { -0.723f, 0.885f, 0.336f, 0.584f, 0.742f, -0.438f }; + int ldb = 2; + float B_expected[] = { 3.65703f, -7.08f, 3.23371f, -4.672f, -1.42226f, 3.504f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1844)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.626f, 0.912f, -0.003f, 0.761f }; + int lda = 2; + float B[] = { 0.736f, -0.383f, 0.0f, -0.238f, 0.013f, 0.473f }; + int ldb = 2; + float B_expected[] = { 1.0853f, -0.383f, 0.217056f, -0.238f, -0.418376f, 0.473f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1845)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.416f, 0.599f, -0.705f, 0.326f, 0.184f, 0.079f, -0.173f, 0.125f, 0.567f }; + int lda = 3; + float B[] = { 0.466f, 0.907f, -0.85f, -0.342f, -0.058f, -0.379f }; + int ldb = 3; + float B_expected[] = { 9.44495f, 5.57299f, -1.49912f, 1.91427f, -0.0282283f, -0.66843f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1846)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { -0.75f, 0.856f, 0.773f, -0.241f, -0.357f, -0.683f, -0.718f, 0.69f, -0.486f }; + int lda = 3; + float B[] = { -0.532f, -0.817f, 0.85f, -0.135f, 0.797f, 0.981f }; + int ldb = 3; + float B_expected[] = { -0.986649f, -0.23645f, 0.85f, -2.14908f, 1.46702f, 0.981f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1847)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.765f, -0.408f, 0.404f, 0.764f, 0.157f, -0.741f, 0.844f, 0.206f, -0.215f }; + int lda = 3; + float B[] = { -0.859f, 0.563f, -0.61f, 0.2f, 0.816f, -0.692f }; + int ldb = 3; + float B_expected[] = { -1.12288f, 9.05017f, 7.1006f, 0.261438f, 3.92523f, 8.00582f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1848)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.354f, -0.931f, 0.18f, 0.391f, 0.01f, 0.429f, 0.685f, 0.332f, -0.643f }; + int lda = 3; + float B[] = { -0.645f, 0.847f, 0.014f, 0.83f, 0.761f, 0.187f }; + int ldb = 3; + float B_expected[] = { -0.645f, 1.09919f, 0.0908923f, 0.83f, 0.43647f, -0.526458f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1849)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.569f, 0.85f, 0.642f, -0.051f, 0.724f, 0.201f, 0.87f, -0.638f, 0.008f }; + int lda = 3; + float B[] = { -0.923f, 0.27f, -0.319f, -0.856f, -0.533f, 0.183f }; + int ldb = 2; + float B_expected[] = { 94.9456f, -32.8005f, -59.1516f, 18.9755f, -66.625f, 22.875f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1850)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.244f, 0.931f, 0.857f, -0.295f, 0.551f, 0.832f, 0.744f, -0.326f, 0.111f }; + int lda = 3; + float B[] = { -0.478f, -0.252f, -0.155f, 0.419f, -0.192f, 0.291f }; + int ldb = 2; + float B_expected[] = { -0.399342f, -0.316914f, -0.217592f, 0.513866f, -0.192f, 0.291f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1851)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.36f, 0.356f, -0.858f, 0.879f, 0.641f, 0.989f, 0.998f, -0.005f, 0.64f }; + int lda = 3; + float B[] = { -0.634f, -0.529f, -0.344f, 0.375f, -0.168f, 0.465f }; + int ldb = 2; + float B_expected[] = { -1.76111f, -1.46944f, 0.441428f, 1.40113f, -3.30563f, -3.40859f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1852)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha = 1.0f; + float A[] = { 0.389f, 0.997f, 0.909f, -0.598f, -0.43f, -0.345f, -0.897f, 0.119f, -0.285f }; + int lda = 3; + float B[] = { 0.779f, -0.129f, 0.016f, 0.599f, -0.668f, -0.638f }; + int ldb = 2; + float B_expected[] = { 0.779f, -0.129f, -0.760663f, 0.727613f, -1.63854f, -0.269713f }; + cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1853)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.876, -0.503, -0.062, -0.987 }; + int lda = 2; + double B[] = { 0.219, -0.986, -0.0, -0.605, 0.289, 0.641 }; + int ldb = 3; + double B_expected[] = { 0.601967125138, -1.29370052694, -0.372910623494, -0.612968591692, 0.292806484296, 0.649442755826 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1854)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.266, -0.505, -0.55, 0.524 }; + int lda = 2; + double B[] = { 0.1, -0.105, 0.757, 0.522, -0.269, -0.142 }; + int ldb = 3; + double B_expected[] = { -0.36361, 0.240845, -0.68529, -0.522, 0.269, 0.142 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1855)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.101, 0.871, 0.202, 0.169 }; + int lda = 2; + double B[] = { 0.018, 0.292, -0.573, 0.866, 0.749, 0.99 }; + int ldb = 3; + double B_expected[] = { -0.178217821782, -2.89108910891, 5.67326732673, -4.91124260355, -0.976331360947, -12.6390532544 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1856)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.387, -0.739, -0.599, 0.114 }; + int lda = 2; + double B[] = { 0.7, 0.473, 0.86, -0.557, 0.283, 0.62 }; + int ldb = 3; + double B_expected[] = { -0.7, -0.473, -0.86, 0.1377, -0.566327, -1.13514 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1857)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.683, -0.009, -0.451, -0.185 }; + int lda = 2; + double B[] = { 0.552, 0.083, -0.976, 0.22, -0.895, -0.301 }; + int ldb = 2; + double B_expected[] = { 0.511946499941, 0.448648648649, -2.21423766373, 1.18918918919, -0.236033397966, -1.62702702703 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1858)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.141, 0.944, 0.529, 0.636 }; + int lda = 2; + double B[] = { 0.178, -0.22, -0.645, -0.585, -0.342, -0.594 }; + int ldb = 2; + double B_expected[] = { -0.29438, 0.22, 0.335535, 0.585, 0.027774, 0.594 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1859)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.541, 0.584, -0.394, 0.371 }; + int lda = 2; + double B[] = { 0.668, 0.848, -0.816, -0.925, -0.145, 0.746 }; + int ldb = 2; + double B_expected[] = { -1.23475046211, -0.342063962613, 1.50831792976, 0.118982018923, 0.268022181146, -2.43268181614 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1860)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.836, -0.024, 0.226, 0.416 }; + int lda = 2; + double B[] = { -0.172, -0.601, 0.542, 0.25, 0.746, 0.55 }; + int ldb = 2; + double B_expected[] = { 0.172, 0.605128, -0.542, -0.263008, -0.746, -0.567904 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1861)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.544, 0.721, 0.623, 0.392, -0.808, -0.022, -0.665, -0.616, -0.735 }; + int lda = 3; + double B[] = { -0.526, -0.486, -0.716, 0.361, 0.365, -0.492 }; + int ldb = 3; + double B_expected[] = { 0.966911764706, 0.261316067268, -0.162398536147, -0.663602941176, -0.140417971025, -1.22766726121 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1862)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.907, 0.558, -0.233, 0.073, -0.734, -0.058, -0.115, 0.513, 0.503 }; + int lda = 3; + double B[] = { -0.606, -0.124, 0.641, -0.074, -0.053, -0.734 }; + int ldb = 3; + double B_expected[] = { 0.606, -0.214148, -0.512222584, 0.074, 0.011708, 0.751921064 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1863)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.9, 0.063, -0.652, -0.841, 0.251, -0.8, 0.365, 0.809, 0.336 }; + int lda = 3; + double B[] = { -0.584, -0.058, -0.964, -0.214, -0.632, -0.611 }; + int ldb = 3; + double B_expected[] = { -8.93978245747, -9.01617340163, 2.86904761905, -3.62368367799, -3.34313934737, 1.81845238095 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1864)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.934, -0.608, 0.49, 0.351, -0.301, 0.602, 0.873, 0.031, -0.2 }; + int lda = 3; + double B[] = { -0.541, -0.729, -0.382, 0.741, 0.546, -0.833 }; + int ldb = 3; + double B_expected[] = { -0.044208458, 0.717158, 0.382, -1.267499127, -0.571823, 0.833 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1865)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.339, 0.049, 0.734, -0.182, 0.427, 0.193, -0.959, -0.679, 0.269 }; + int lda = 3; + double B[] = { 0.824, 0.907, 0.632, -0.348, -0.646, 0.741 }; + int ldb = 2; + double B_expected[] = { 2.43067846608, 2.67551622419, -0.444066789635, 1.95537225481, 9.9460940476, 11.7193971004 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1866)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.766, -0.422, -0.518, 0.517, 0.669, 0.337, -0.579, 0.885, -0.677 }; + int lda = 3; + double B[] = { 0.211, -0.911, -0.685, -0.777, -0.919, 0.282 }; + int ldb = 2; + double B_expected[] = { -0.211, 0.911, 0.794087, 0.306013, 0.094064005, -0.025352505 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1867)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.686, -0.256, 0.028, 0.371, 0.469, 0.115, 0.284, 0.139, 0.677 }; + int lda = 3; + double B[] = { -0.877, -0.818, 0.191, 0.468, 0.889, -0.002 }; + int ldb = 2; + double B_expected[] = { -1.30020532939, -0.819646768394, -0.0852626506631, -0.998592183627, -1.31314623338, 0.00295420974889 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1868)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.819, -0.523, 0.042, 0.545, -0.292, 0.283, 0.224, 0.247, -0.325 }; + int lda = 3; + double B[] = { 0.153, -0.272, -0.226, 0.987, -0.216, -0.218 }; + int ldb = 2; + double B_expected[] = { -0.075843944, -0.285622962, 0.164872, -1.048694, 0.216, 0.218 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1869)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.164, 0.486, 0.891, -0.508 }; + int lda = 2; + double B[] = { 0.368, 0.761, -0.349, 0.324, 0.241, 0.561 }; + int ldb = 3; + double B_expected[] = { -2.24390243902, -4.64024390244, 2.12804878049, -1.50893028615, -3.96487900903, 3.14021989629 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1870)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.019, -0.382, -0.579, 0.76 }; + int lda = 2; + double B[] = { -0.596, -0.074, 0.576, 0.861, -0.44, 0.842 }; + int ldb = 3; + double B_expected[] = { 0.596, 0.074, -0.576, -0.633328, 0.468268, -1.062032 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1871)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.449, -0.367, -0.268, 0.1 }; + int lda = 2; + double B[] = { 0.58, -0.203, 0.053, 0.792, 0.355, -0.685 }; + int ldb = 3; + double B_expected[] = { -6.01906458797, -1.66681514477, 3.9706013363, -7.92, -3.55, 6.85 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1872)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.159, 0.333, 0.515, 0.715 }; + int lda = 2; + double B[] = { -0.631, 0.472, 0.796, 0.278, 0.802, 0.298 }; + int ldb = 3; + double B_expected[] = { 0.77417, -0.05897, -0.64253, -0.278, -0.802, -0.298 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1873)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.056, -0.493, 0.619, -0.028 }; + int lda = 2; + double B[] = { -0.32, -0.217, 0.301, 0.729, -0.847, -0.577 }; + int ldb = 2; + double B_expected[] = { 5.71428571429, 118.576530612, -5.375, -92.7901785714, 15.125, 313.763392857 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1874)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.595, 0.64, 0.109, 0.969 }; + int lda = 2; + double B[] = { 0.186, -0.435, -0.747, 0.212, 0.257, 0.804 }; + int ldb = 2; + double B_expected[] = { -0.186, 0.455274, 0.747, -0.293423, -0.257, -0.775987 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1875)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.484, 0.769, 0.91, 0.817 }; + int lda = 2; + double B[] = { -0.668, 0.544, 0.753, 0.796, -0.74, -0.091 }; + int ldb = 2; + double B_expected[] = { 2.4380974539, -0.665850673195, -0.0077814418807, -0.97429620563, 1.35195534965, 0.111383108935 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1876)"); + } + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.725, 0.73, -0.095, 0.123 }; + int lda = 2; + double B[] = { -0.26, 0.579, 0.393, -0.18, 0.358, 0.839 }; + int ldb = 2; + double B_expected[] = { 0.68267, -0.579, -0.5244, 0.18, 0.25447, -0.839 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1877)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.009, 0.237, -0.563, 0.993, 0.508, 0.771, 0.745, 0.233, 0.255 }; + int lda = 3; + double B[] = { -0.328, -0.482, 0.083, -0.125, -0.712, -0.757 }; + int ldb = 3; + double B_expected[] = { 21.9110553583, 1.44282075035, -0.325490196078, -281.330646047, -3.10396016674, 2.96862745098 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1878)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.484, -0.131, 0.563, -0.095, 0.012, -0.988, -0.722, 0.738, 0.05 }; + int lda = 3; + double B[] = { -0.069, -0.137, -0.45, -0.24, 0.221, -0.509 }; + int ldb = 3; + double B_expected[] = { -0.1081604, 0.5816, 0.45, -0.009639148, 0.281892, 0.509 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1879)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.521, 0.487, -0.961, 0.903, -0.045, 0.059, -0.61, -0.328, 0.883 }; + int lda = 3; + double B[] = { -0.772, 0.079, -0.227, 0.998, 0.302, -0.099 }; + int ldb = 3; + double B_expected[] = { 1.48176583493, 31.4896566432, 12.9778986844, -1.91554702495, -31.7275325229, -12.9967319963 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1880)"); + } + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.642, 0.511, 0.762, 0.804, -0.28, -0.318, 0.382, -0.165, -0.007 }; + int lda = 3; + double B[] = { 0.987, 0.436, -0.783, 0.175, -0.973, -0.319 }; + int ldb = 3; + double B_expected[] = { -0.987, 0.357548, 1.21902942, -0.175, 1.1137, 0.5696105 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1881)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.995, 0.625, 0.16, -0.127, -0.722, -0.355, -0.14, -0.146, -0.756 }; + int lda = 3; + double B[] = { 0.676, 0.038, 0.543, 0.296, -0.44, 0.751 }; + int ldb = 2; + double B_expected[] = { 0.650272121575, -0.128270318012, 0.869769452872, 0.209093640534, -0.582010582011, 0.993386243386 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1882)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { -0.619, 0.548, 0.064, -0.483, -0.508, -0.819, 0.237, 0.852, -0.512 }; + int lda = 3; + double B[] = { -0.169, 0.429, -0.789, 0.79, 0.479, 0.817 }; + int ldb = 2; + double B_expected[] = { 0.860726164, -0.280732428, 1.197108, -0.093916, -0.479, -0.817 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1883)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.794, -0.098, 0.442, -0.991, 0.049, 0.079, -0.8, -0.762, 0.395 }; + int lda = 3; + double B[] = { 0.496, -0.734, -0.679, -0.697, 0.426, 0.094 }; + int ldb = 2; + double B_expected[] = { -0.624685138539, 0.92443324937, 12.6077725801, 16.0733562947, -2.90102076605, -4.48707504683 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1884)"); + } + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha = -1; + double A[] = { 0.848, -0.765, 0.528, -0.693, 0.252, -0.135, -0.507, 0.954, -0.056 }; + int lda = 3; + double B[] = { 0.791, -0.787, 0.636, 0.271, -0.905, -0.974 }; + int ldb = 2; + double B_expected[] = { -0.791, 0.787, -1.241115, 0.331055, 1.155097475, 0.603156425 }; + cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1885)"); + } + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.491f, -0.317f, -0.14f, -0.739f, -0.969f, -0.518f, 0.702f, -0.287f }; + int lda = 2; + float B[] = { -0.962f, -0.38f, 0.656f, 0.587f, -0.195f, -0.862f, -0.679f, 0.598f, 0.919f, 0.714f, -0.513f, 0.726f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1886) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1886) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.6f, 0.338f, -0.048f, -0.926f, 0.236f, 0.362f, 0.605f, 0.562f }; + int lda = 2; + float B[] = { -0.009f, 0.371f, -0.989f, 0.728f, -0.062f, 0.113f, 0.714f, 0.604f, -0.293f, 0.859f, -0.875f, 0.216f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1887) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1887) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.889f, -0.479f, -0.526f, 0.077f, -0.704f, 0.242f, 0.458f, -0.553f }; + int lda = 2; + float B[] = { -0.554f, 0.966f, 0.076f, 0.42f, 0.85f, 0.369f, 0.124f, -0.476f, -0.007f, 0.428f, 0.452f, -0.214f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1888) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1888) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.947f, 0.444f, 0.079f, -0.597f, 0.978f, -0.64f, 0.82f, 0.808f }; + int lda = 2; + float B[] = { -0.899f, -0.964f, -0.714f, 0.422f, -0.084f, -0.78f, -0.609f, -0.595f, 0.748f, -0.926f, 0.242f, -0.474f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1889) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1889) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.547f, -0.763f, -0.805f, 0.498f, 0.786f, -0.082f, 0.922f, 0.538f }; + int lda = 2; + float B[] = { -0.074f, -0.617f, 0.359f, -0.383f, -0.172f, 0.911f, -0.934f, 0.066f, -0.67f, 0.895f, 0.92f, 0.255f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1890) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1890) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.096f, -0.362f, -0.311f, -0.347f, 0.161f, -0.517f, -0.393f, 0.572f }; + int lda = 2; + float B[] = { 0.742f, -0.419f, -0.391f, 0.846f, -0.255f, -0.364f, 0.006f, -0.496f, 0.118f, -0.593f, 0.773f, 0.053f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1891) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1891) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.669f, 0.845f, 0.657f, -0.43f, 0.19f, 0.206f, -0.305f, 0.761f }; + int lda = 2; + float B[] = { -0.457f, 0.857f, -0.203f, 0.942f, 0.462f, 0.52f, 0.521f, -0.609f, 0.069f, 0.005f, -0.419f, 0.806f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1892) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1892) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.269f, -0.87f, -0.592f, 0.813f, 0.977f, -0.848f, 0.282f, -0.311f }; + int lda = 2; + float B[] = { -0.654f, 0.857f, -0.834f, 0.796f, 0.414f, -0.499f, 0.961f, 0.643f, 0.117f, 0.758f, -0.189f, -0.768f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1893) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1893) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.361f, -0.818f, 0.039f, 0.275f, 0.541f, -0.615f, 0.025f, -0.691f, -0.697f, 0.976f, 0.746f, 0.607f, 0.651f, -0.918f, -0.702f, 0.37f, -0.668f, -0.114f }; + int lda = 3; + float B[] = { 0.218f, 0.75f, 0.575f, -0.702f, 0.7f, -0.41f, 0.374f, 0.489f, -0.876f, 0.842f, -0.848f, 0.901f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1894) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1894) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.483f, 0.088f, -0.192f, 0.17f, 0.683f, 0.293f, -0.773f, 0.365f, -0.28f, 0.257f, 0.818f, 0.45f, -0.551f, -0.051f, 0.899f, -0.127f, -0.915f, 0.152f }; + int lda = 3; + float B[] = { 0.732f, -0.394f, 0.073f, -0.082f, 0.918f, -0.53f, 0.67f, 0.149f, -0.344f, -0.65f, -0.62f, -0.632f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1895) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1895) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.508f, -0.251f, 0.655f, -0.315f, -0.26f, 0.229f, 0.05f, -0.276f, -0.993f, 0.647f, -0.547f, -0.34f, 0.781f, -0.819f, 0.865f, 0.361f, -0.028f, 0.178f }; + int lda = 3; + float B[] = { 0.972f, 0.048f, 0.71f, -0.168f, -0.274f, 0.92f, 0.789f, 0.485f, 0.578f, 0.73f, -0.931f, 0.288f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1896) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1896) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.874f, 0.651f, 0.074f, -0.862f, -0.42f, 0.066f, -0.845f, 0.482f, -0.44f, 0.724f, 0.137f, -0.123f, -0.63f, -0.011f, -0.187f, -0.205f, 0.976f, -0.81f }; + int lda = 3; + float B[] = { 0.539f, 0.131f, 0.986f, 0.615f, 0.983f, -0.22f, 0.144f, 0.677f, 0.561f, -0.494f, -0.433f, -0.089f }; + int ldb = 3; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1897) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1897) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.284f, 0.871f, -0.835f, 0.926f, 0.459f, -0.889f, 0.387f, 0.319f, -0.366f, 0.884f, 0.236f, 0.921f, 0.619f, -0.41f, -0.709f, -0.372f, 0.06f, 0.551f }; + int lda = 3; + float B[] = { 0.354f, 0.245f, 0.552f, 0.77f, -0.524f, -0.973f, -0.814f, -0.835f, -0.976f, 0.396f, -0.726f, -0.204f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1898) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1898) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.98f, -0.854f, -0.832f, 0.514f, -0.028f, -0.857f, 0.066f, 0.415f, -0.316f, 0.538f, -0.465f, -0.691f, 0.286f, 0.954f, -0.486f, -0.574f, -0.429f, 0.992f }; + int lda = 3; + float B[] = { 0.295f, 0.578f, -0.167f, 0.106f, -0.782f, 0.668f, 0.278f, 0.855f, 0.038f, 0.976f, 0.167f, -0.777f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1899) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1899) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { 0.534f, 0.782f, 0.282f, 0.581f, 0.804f, -0.68f, 0.234f, -0.758f, 0.033f, -0.503f, 0.981f, -0.839f, 0.919f, 0.175f, 0.152f, -0.683f, -0.346f, -0.279f }; + int lda = 3; + float B[] = { 0.135f, -0.969f, -0.314f, -0.026f, -0.284f, 0.529f, 0.781f, -0.413f, -0.018f, -0.859f, -0.817f, -0.849f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1900) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1900) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.0f}; + float A[] = { -0.426f, 0.148f, 0.889f, 0.217f, 0.779f, -0.963f, -0.516f, -0.366f, 0.721f, 0.4f, -0.976f, -0.365f, 0.532f, 0.188f, 0.176f, 0.082f, -0.691f, -0.833f }; + int lda = 3; + float B[] = { -0.71f, 0.72f, 0.533f, 0.395f, -0.749f, 0.151f, 0.871f, 0.445f, 0.195f, -0.38f, -0.318f, -0.833f }; + int ldb = 2; + float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1901) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1901) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.068f, 0.806f, -0.621f, 0.037f, 0.096f, -0.312f, 0.416f, 0.428f }; + int lda = 2; + float B[] = { 0.481f, 0.192f, -0.954f, -0.958f, -0.015f, -0.203f, -0.352f, 0.08f, -0.662f, 0.681f, -0.571f, 0.146f }; + int ldb = 3; + float B_expected[] = { 0.612512f, 0.186537f, -1.27483f, -1.08103f, -0.0395775f, -0.248522f, 0.0478574f, -0.671409f, -3.31165f, 0.315466f, -1.07961f, -0.629312f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1902) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1902) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.863f, 0.689f, 0.171f, -0.164f, 0.065f, -0.727f, -0.245f, -0.556f }; + int lda = 2; + float B[] = { 0.711f, -0.616f, -0.684f, 0.823f, 0.491f, 0.06f, -0.776f, 0.768f, 0.391f, 0.897f, 0.779f, -0.875f }; + int ldb = 3; + float B_expected[] = { 0.616f, 0.711f, -0.823f, -0.684f, -0.06f, 0.491f, -0.98994f, -0.796557f, -0.644091f, 0.372992f, 0.804736f, 0.685199f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1903) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1903) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.718f, -0.323f, 0.264f, 0.081f, -0.73f, 0.809f, -0.349f, -0.543f }; + int lda = 2; + float B[] = { 0.862f, 0.676f, -0.085f, 0.204f, 0.063f, -0.124f, 0.162f, 0.754f, -0.978f, -0.097f, 0.986f, 0.943f }; + int ldb = 3; + float B_expected[] = { -1.32203f, -1.00495f, 1.84655f, 0.329156f, -1.66053f, -2.19061f, 0.420449f, -1.11835f, 1.19333f, 0.945621f, -0.495118f, -2.05487f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1904) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1904) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.515f, -0.166f, -0.364f, 0.24f, 0.056f, 0.023f, 0.05f, 0.853f }; + int lda = 2; + float B[] = { 0.779f, 0.443f, -0.852f, 0.037f, -0.649f, 0.554f, 0.469f, 0.632f, 0.224f, -0.148f, 0.457f, -0.78f }; + int ldb = 3; + float B_expected[] = { -0.396821f, 0.767272f, -0.040136f, -0.867948f, -0.587169f, -0.692532f, -0.632f, 0.469f, 0.148f, 0.224f, 0.78f, 0.457f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1905) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1905) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.576f, 0.785f, 0.297f, -0.561f, -0.164f, 0.463f, -0.454f, 0.803f }; + int lda = 2; + float B[] = { -0.78f, -0.792f, 0.223f, 0.206f, -0.097f, 0.504f, 0.721f, 0.205f, 0.508f, -0.8f, -0.469f, 0.283f }; + int ldb = 2; + float B_expected[] = { -0.164671f, -1.12975f, 0.510941f, 0.652691f, -0.386549f, 0.358405f, 0.959415f, -0.414847f, 0.906729f, -0.353789f, -0.734462f, 0.786484f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1906) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1906) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.04f, 0.917f, 0.327f, -0.115f, -0.656f, -0.811f, -0.646f, 0.78f }; + int lda = 2; + float B[] = { 0.131f, 0.677f, -0.431f, -0.652f, -0.415f, 0.094f, -0.253f, 0.496f, 0.797f, 0.166f, 0.737f, -0.685f }; + int ldb = 2; + float B_expected[] = { -0.677f, 0.131f, 0.101647f, -0.894111f, -0.094f, -0.415f, -0.221099f, -0.601474f, -0.166f, 0.797f, -0.070263f, 1.12521f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1907) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1907) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.769f, -0.384f, -0.522f, -0.086f, -0.129f, -0.574f, 0.56f, -0.809f }; + int lda = 2; + float B[] = { 0.367f, 0.169f, -0.321f, -0.982f, -0.563f, -0.051f, -0.742f, 0.595f, 0.067f, -0.183f, -0.524f, 0.77f }; + int ldb = 2; + float B_expected[] = { -0.178752f, 0.912513f, 0.836303f, 0.634945f, 0.817549f, -0.921899f, 0.275884f, -0.926446f, 0.49345f, -0.309856f, -0.00752416f, -0.946584f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1908) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1908) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.758f, 0.228f, 0.263f, 0.731f, 0.171f, 0.051f, 0.968f, 0.731f }; + int lda = 2; + float B[] = { 0.783f, 0.422f, -0.649f, -0.428f, 0.216f, 0.659f, -0.608f, -0.239f, -0.588f, 0.01f, -0.009f, -0.374f }; + int ldb = 2; + float B_expected[] = { -1.00898f, 0.640819f, 0.428f, -0.649f, -1.1663f, 0.201195f, 0.239f, -0.608f, -0.114941f, -0.859027f, 0.374f, -0.009f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1909) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1909) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.601f, -0.017f, 0.518f, -0.975f, -0.394f, 0.396f, 0.395f, -0.374f, -0.321f, 0.221f, 0.809f, 0.74f, -0.009f, 0.88f, 0.057f, 0.65f, 0.761f, -0.839f }; + int lda = 3; + float B[] = { -0.644f, 0.29f, 0.458f, 0.755f, -0.725f, 0.313f, 0.537f, 0.945f, 0.377f, 0.776f, -0.686f, -0.561f }; + int ldb = 3; + float B_expected[] = { -5.28862f, 4.51343f, 4.18447f, 0.519474f, 0.288441f, -0.634688f, -7.53878f, 2.5597f, 2.79299f, 2.44873f, 0.781327f, -0.0400353f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1910) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1910) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.746f, 0.079f, -0.151f, -0.433f, 0.524f, -0.201f, 0.198f, -0.368f, -0.449f, 0.693f, -0.14f, -0.574f, -0.242f, -0.584f, -0.298f, 0.41f, -0.234f, 0.92f }; + int lda = 3; + float B[] = { -0.787f, 0.186f, -0.104f, -0.142f, -0.548f, 0.332f, -0.66f, 0.413f, 0.046f, 0.818f, -0.783f, -0.376f }; + int ldb = 3; + float B_expected[] = { 0.320805f, -0.445083f, 0.410072f, -0.371288f, -0.332f, -0.548f, -0.566249f, -0.287942f, -0.315918f, 0.152204f, 0.376f, -0.783f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1911) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1911) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.623f, -0.229f, 0.653f, -0.19f, 0.42f, -0.181f, -0.061f, 0.963f, 0.422f, 0.989f, 0.919f, -0.352f, -0.849f, 0.052f, 0.02f, -0.771f, -0.38f, -0.566f }; + int lda = 3; + float B[] = { 0.018f, 0.461f, -0.184f, 0.334f, 0.075f, 0.694f, 0.022f, 0.239f, 0.971f, -0.339f, 0.203f, 0.083f }; + int ldb = 3; + float B_expected[] = { 0.642534f, -0.265073f, -0.901268f, 0.171623f, 1.29999f, 0.384146f, 0.326529f, -0.155337f, 0.629902f, 0.0571184f, -0.761884f, -0.282697f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1912) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1912) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.35f, 0.154f, 0.397f, -0.709f, 0.587f, -0.895f, -0.848f, 0.933f, -0.887f, -0.393f, 0.824f, 0.182f, 0.159f, 0.303f, -0.011f, -0.363f, 0.875f, 0.991f }; + int lda = 3; + float B[] = { -0.513f, 0.564f, 0.404f, -0.635f, 0.924f, 0.238f, -0.059f, 0.96f, 0.341f, 0.483f, -0.844f, 0.84f }; + int ldb = 3; + float B_expected[] = { -0.564f, -0.513f, -0.321901f, 0.495188f, -0.487057f, 1.06506f, -0.96f, -0.059f, -1.35213f, 1.18665f, -1.15086f, -1.02151f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1913) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1913) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.87f, 0.914f, -0.097f, -0.138f, 0.894f, -0.173f, 0.648f, -0.327f, 0.7f, 0.816f, 0.63f, 0.637f, -0.671f, 0.322f, -0.922f, 0.618f, 0.93f, 0.654f }; + int lda = 3; + float B[] = { -0.347f, -0.273f, -0.384f, 0.02f, 0.392f, -0.206f, 0.347f, 0.269f, 0.016f, 0.797f, 0.699f, -0.966f }; + int ldb = 2; + float B_expected[] = { -0.443754f, 0.343363f, 0.300599f, -0.548484f, 0.757674f, 0.722159f, 0.224607f, -0.673284f, -0.565323f, 0.414754f, 1.04867f, 0.014162f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1914) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1914) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { 0.965f, -0.191f, 0.489f, 0.84f, 0.011f, -0.951f, 0.067f, -0.21f, -0.911f, 0.767f, -0.162f, 0.274f, -0.502f, -0.445f, 0.492f, 0.023f, -0.818f, 0.859f }; + int lda = 3; + float B[] = { 0.66f, -0.303f, 0.223f, 0.261f, -0.252f, -0.238f, -0.012f, -0.485f, 0.783f, -0.196f, -0.57f, 0.929f }; + int ldb = 2; + float B_expected[] = { 0.177032f, 1.21679f, -0.596808f, -0.300881f, 0.159577f, -0.641744f, 0.928958f, 0.289807f, 0.196f, 0.783f, -0.929f, -0.57f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1915) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1915) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.652f, 0.046f, -0.229f, 0.473f, -0.783f, -0.211f, 0.698f, 0.201f, -0.153f, 0.918f, -0.996f, -0.186f, 0.84f, -0.545f, -0.457f, 0.057f, 0.649f, 0.77f }; + int lda = 3; + float B[] = { -0.227f, 0.14f, 0.165f, -0.945f, -0.212f, -0.522f, 0.908f, 0.722f, -0.208f, 0.969f, 0.721f, -0.816f }; + int ldb = 2; + float B_expected[] = { 0.189219f, 0.361509f, -1.42444f, -0.353565f, -0.361882f, -0.741783f, 1.80537f, 1.02311f, -1.24128f, 0.407779f, 2.0229f, -0.0912412f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1916) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1916) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 1.0f}; + float A[] = { -0.945f, 0.36f, 0.3f, 0.128f, -0.27f, -0.834f, 0.349f, -0.6f, -0.293f, 0.122f, -0.481f, -0.681f, -0.815f, -0.195f, 0.728f, 0.016f, 0.037f, 0.989f }; + int lda = 3; + float B[] = { -0.97f, 0.784f, 0.488f, 0.39f, -0.482f, -0.518f, -0.797f, 0.271f, 0.257f, 0.637f, 0.118f, -0.993f }; + int ldb = 2; + float B_expected[] = { -0.784f, -0.97f, -0.39f, 0.488f, 0.62904f, -0.090648f, -0.091536f, -0.89348f, 0.3246f, -0.273981f, 1.04514f, -0.5676f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1917) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1917) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.795f, 0.073f, 0.104f, -0.261f, -0.712f, 0.881f, -0.474f, -0.906f }; + int lda = 2; + float B[] = { -0.41f, -0.191f, -0.359f, -0.718f, -0.902f, 0.646f, -0.703f, -0.809f, -0.342f, -0.783f, -0.053f, 0.917f }; + int ldb = 3; + float B_expected[] = { 0.0285203f, -0.0489535f, 0.0936712f, -0.036556f, -0.0702473f, -0.11991f, -0.0924979f, -0.0235243f, -0.0742841f, -0.0262764f, 0.074552f, 0.0886899f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1918) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1918) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.281f, -0.111f, 0.055f, -0.643f, 0.33f, -0.663f, 0.32f, 0.423f }; + int lda = 2; + float B[] = { 0.103f, 0.357f, -0.591f, 0.833f, -0.906f, -0.192f, -0.391f, -0.622f, -0.345f, -0.58f, -0.132f, -0.874f }; + int ldb = 3; + float B_expected[] = { -0.0357f, 0.0103f, -0.0833f, -0.0591f, 0.0192f, -0.0906f, 0.0707864f, -0.0167114f, 0.0245802f, 0.0223124f, 0.0280882f, -0.0205626f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1919) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1919) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.311f, -0.648f, -0.732f, 0.825f, 0.152f, -0.529f, -0.353f, 0.568f }; + int lda = 2; + float B[] = { 0.86f, -0.991f, -0.992f, -0.617f, 0.137f, -0.585f, -0.467f, 0.632f, 0.672f, 0.777f, -0.609f, 0.511f }; + int ldb = 3; + float B_expected[] = { 0.0795347f, -0.0537122f, -0.0885393f, -0.0194836f, -0.0386006f, -0.0674606f, 0.109194f, -0.0434058f, -0.0240177f, -0.151722f, 0.117678f, -0.0168304f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1920) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1920) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.318f, -0.946f, -0.389f, 0.051f, 0.322f, -0.626f, -0.839f, -0.252f }; + int lda = 2; + float B[] = { 0.372f, -0.23f, 0.515f, 0.213f, 0.222f, 0.296f, -0.524f, 0.442f, -0.581f, -0.409f, 0.894f, -0.246f }; + int ldb = 3; + float B_expected[] = { 0.00443f, 0.081742f, -0.0708404f, 0.0446048f, 0.0184432f, -0.0219864f, -0.0442f, -0.0524f, 0.0409f, -0.0581f, 0.0246f, 0.0894f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1921) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1921) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.411f, 0.34f, -0.85f, 0.557f, -0.918f, 0.484f, -0.889f, 0.561f }; + int lda = 2; + float B[] = { -0.763f, -0.514f, -0.744f, -0.948f, -0.312f, 0.818f, -0.686f, 0.341f, -0.043f, 0.235f, -0.201f, 0.874f }; + int ldb = 2; + float B_expected[] = { 0.0169288f, 0.17164f, -0.0683166f, -0.0596556f, 0.155447f, -0.0526808f, -0.086698f, 0.101645f, 0.039085f, -0.0218708f, 0.0437248f, -0.0036776f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1922) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1922) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.046f, 0.571f, 0.825f, 0.665f, 0.658f, -0.977f, 0.247f, -0.944f }; + int lda = 2; + float B[] = { -0.342f, 0.089f, -0.975f, 0.027f, -0.621f, -0.127f, 0.937f, -0.332f, -0.357f, -0.213f, 0.57f, 0.134f }; + int ldb = 2; + float B_expected[] = { -0.0089f, -0.0342f, -0.0302572f, -0.0663011f, 0.0127f, -0.0621f, -0.0358283f, 0.122154f, 0.0213f, -0.0357f, -0.0622943f, 0.0596805f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1923) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1923) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.655f, 0.051f, -0.864f, 0.04f, -0.45f, 0.276f, -0.365f, 0.766f }; + int lda = 2; + float B[] = { 0.12f, 0.036f, 0.425f, -0.145f, -0.772f, -0.483f, -0.154f, -0.327f, 0.532f, 0.59f, 0.305f, 0.443f }; + int ldb = 2; + float B_expected[] = { -0.0745593f, 0.00123365f, -0.0525674f, -0.00611891f, 0.0752311f, -0.0558274f, -0.0001932f, 0.0425972f, -0.0986826f, -0.00963885f, -0.00999124f, -0.0625937f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1924) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1924) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.253f, -0.163f, -0.061f, -0.032f, -0.764f, 0.863f, 0.051f, 0.669f }; + int lda = 2; + float B[] = { 0.966f, 0.42f, -0.765f, 0.186f, -0.798f, 0.278f, -0.37f, -0.484f, -0.724f, -0.682f, 0.034f, 0.352f }; + int ldb = 2; + float B_expected[] = { -0.0455826f, 0.0925287f, -0.0186f, -0.0765f, -0.0260316f, -0.0836058f, 0.0484f, -0.037f, 0.0661616f, -0.0710662f, -0.0352f, 0.0034f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1925) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1925) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.017f, -0.631f, -0.052f, 0.296f, -0.486f, -0.279f, -0.378f, 0.997f, 0.533f, 0.87f, 0.808f, 0.007f, 0.185f, -0.263f, -0.757f, -0.856f, 0.575f, -0.81f }; + int lda = 3; + float B[] = { -0.238f, -0.924f, 0.494f, -0.089f, 0.96f, 0.959f, 0.415f, 0.39f, -0.744f, -0.881f, -0.594f, 0.629f }; + int ldb = 3; + float B_expected[] = { 0.0798921f, -0.243487f, 0.0441094f, -0.0391653f, 0.0229218f, 0.134667f, 0.192099f, 0.152741f, 0.154557f, 0.0857677f, -0.0854154f, 0.0170199f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1926) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1926) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.977f, -0.949f, 0.192f, 0.803f, -0.964f, -0.162f, 0.799f, -0.081f, -0.055f, 0.014f, 0.99f, 0.804f, 0.913f, -0.898f, -0.057f, 0.51f, 0.453f, 0.622f }; + int lda = 3; + float B[] = { -0.852f, -0.001f, -0.955f, -0.97f, -0.071f, -0.664f, -0.077f, -0.746f, 0.228f, -0.948f, 0.476f, -0.285f }; + int ldb = 3; + float B_expected[] = { 0.0840343f, -0.066376f, 0.0369724f, -0.0350854f, 0.0664f, -0.0071f, 0.105481f, 0.0565767f, 0.0283146f, -0.00141f, 0.0285f, 0.0476f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1927) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1927) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.822f, 0.618f, -0.935f, 0.49f, 0.885f, -0.488f, 0.412f, 0.861f, -0.144f, 0.906f, -0.054f, 0.455f, 0.213f, 0.34f, -0.465f, 0.107f, -0.611f, 0.088f }; + int lda = 3; + float B[] = { 0.476f, -0.297f, -0.966f, -0.038f, -0.346f, -0.81f, -0.749f, -0.065f, -0.225f, -0.663f, 0.073f, -0.379f }; + int ldb = 3; + float B_expected[] = { -0.00473086f, 0.0543508f, 0.139511f, -0.0231317f, -0.199775f, 0.100154f, 0.0488188f, -0.054416f, -0.0610839f, 0.0929832f, -0.0289368f, -0.113983f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1928) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1928) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { -0.188f, 0.741f, 0.583f, 0.527f, 0.025f, 0.216f, -0.44f, -0.071f, -0.126f, -0.093f, 0.743f, -0.476f, 0.661f, -0.66f, 0.564f, -0.943f, -0.976f, -0.035f }; + int lda = 3; + float B[] = { -0.648f, -0.367f, -0.402f, -0.309f, 0.412f, 0.531f, -0.248f, 0.181f, 0.507f, 0.502f, -0.593f, 0.404f }; + int ldb = 3; + float B_expected[] = { 0.0367f, -0.0648f, 0.0424472f, -0.0713177f, -0.21132f, 0.0600063f, -0.0181f, -0.0248f, -0.0599248f, 0.0410731f, 0.0277256f, 0.00238266f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1929) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1929) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.76f, -0.021f, -0.011f, 0.14f, 0.699f, 0.94f, 0.296f, 0.333f, 0.654f, -0.917f, 0.008f, -0.999f, -0.963f, 0.687f, -0.481f, 0.106f, 0.128f, -0.165f }; + int lda = 3; + float B[] = { -0.742f, 0.774f, -0.335f, -0.99f, 0.799f, 0.901f, 0.753f, -0.085f, -0.042f, -0.591f, 0.202f, 0.515f }; + int ldb = 2; + float B_expected[] = { 0.313744f, -0.259345f, -0.290807f, 0.212822f, -0.00668591f, -0.0164417f, 0.10903f, 0.137068f, 0.157578f, -0.23594f, -0.0747323f, 0.254147f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1930) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1930) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.582f, -0.175f, -0.48f, 0.567f, -0.571f, 0.062f, 0.038f, -0.625f, 0.737f, 0.799f, -0.569f, -0.932f, 0.522f, -0.763f, 0.156f, -0.524f, 0.138f, 0.007f }; + int lda = 3; + float B[] = { 0.998f, 0.6f, 0.555f, -0.737f, -0.162f, 0.263f, 0.317f, -0.092f, 0.302f, -0.671f, 0.418f, -0.814f }; + int ldb = 2; + float B_expected[] = { -0.106233f, 0.0480583f, 0.0514817f, -0.0392668f, -0.0209428f, -0.0560716f, 0.0184048f, -0.0174744f, 0.0671f, 0.0302f, 0.0814f, 0.0418f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1931) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1931) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.964f, 0.509f, 0.48f, -0.833f, 0.867f, 0.51f, -0.643f, 0.115f, -0.594f, -0.409f, -0.174f, 0.527f, 0.676f, 0.431f, 0.261f, -0.239f, 0.816f, -0.231f }; + int lda = 3; + float B[] = { -0.659f, -0.029f, -0.581f, -0.938f, -0.904f, -0.445f, 0.119f, 0.709f, -0.649f, 0.825f, 0.532f, -0.453f }; + int ldb = 2; + float B_expected[] = { 0.0305784f, -0.0522153f, 0.100975f, -0.00695419f, -0.055793f, 0.11446f, 0.0887801f, 0.177079f, -0.177262f, 0.0336107f, -0.0717714f, 0.251108f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1932) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1932) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + float alpha[2] = {0.0f, 0.1f}; + float A[] = { 0.859f, 0.745f, 0.03f, -0.98f, -0.402f, 0.38f, -0.214f, 0.605f, 0.342f, -0.059f, -0.096f, 0.606f, -0.543f, 0.503f, 0.63f, -0.269f, 0.252f, 0.626f }; + int lda = 3; + float B[] = { 0.85f, 0.642f, 0.679f, -0.254f, 0.192f, 0.766f, -0.869f, -0.09f, 0.68f, -0.898f, 0.272f, -0.651f }; + int ldb = 2; + float B_expected[] = { -0.0642f, 0.085f, 0.0254f, 0.0679f, 0.008626f, 0.079566f, 0.07478f, -0.113829f, -0.0156973f, 0.0906397f, 0.125668f, 0.0985369f }; + cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1933) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1933) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.189, 0.519, -0.455, -0.444, -0.21, -0.507, -0.591, 0.859 }; + int lda = 2; + double B[] = { -0.779, -0.484, 0.249, -0.107, -0.755, -0.047, 0.941, 0.675, -0.757, 0.645, -0.649, 0.242 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1934) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1934) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.988, 0.73, 0.279, -0.967, -0.288, -0.095, -0.821, 0.178 }; + int lda = 2; + double B[] = { 0.702, 0.943, -0.235, -0.565, 0.279, -0.146, 0.816, 0.473, 0.893, 0.877, -0.797, -0.159 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1935) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1935) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.716, -0.549, 0.436, -0.822, -0.029, -0.586, 0.791, -0.159 }; + int lda = 2; + double B[] = { 0.021, 0.391, 0.296, -0.154, -0.513, 0.738, -0.336, 0.317, 0.502, 0.543, 0.027, 0.802 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1936) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1936) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.715, -0.875, -0.501, 0.425, -0.928, -0.929, -0.542, 0.915 }; + int lda = 2; + double B[] = { 0.065, 0.679, -0.545, 0.042, 0.199, -0.86, 0.159, 0.943, 0.19, 0.403, 0.994, 0.76 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1937) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1937) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.936, -0.989, -0.57, 0.018, -0.821, 0.516, -0.479, 0.209 }; + int lda = 2; + double B[] = { 0.722, -0.756, -0.828, -0.191, -0.981, -0.466, 0.347, 0.85, -0.596, -0.826, -0.182, -0.321 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1938) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1938) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.693, 0.976, -0.356, -0.313, 0.926, -0.164, -0.337, 0.056 }; + int lda = 2; + double B[] = { -0.988, -0.633, -0.745, -0.392, -0.362, -0.708, -0.706, -0.093, -0.177, 0.837, 0.391, -0.853 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1939) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1939) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.483, -0.383, 0.357, 0.889, 0.523, -0.148, -0.592, 0.481 }; + int lda = 2; + double B[] = { -0.41, 0.994, -0.779, -0.354, 0.571, 0.51, -0.526, 0.934, 0.469, 0.735, -0.47, -0.164 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1940) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1940) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.576, -0.089, 0.953, -0.317, 0.408, 0.618, 0.092, -0.84 }; + int lda = 2; + double B[] = { 0.141, -0.32, -0.007, -0.682, -0.068, -0.412, 0.675, -0.809, 0.931, -0.257, -0.048, 0.633 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1941) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1941) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.269, 0.567, 0.497, -0.969, 0.957, 0.538, -0.921, 0.639, 0.599, -0.436, -0.045, 0.164, 0.827, 0.489, -0.729, 0.723, -0.01, 0.934 }; + int lda = 3; + double B[] = { -0.391, 0.434, -0.349, -0.456, -0.541, 0.289, 0.31, 0.447, 0.971, -0.626, -0.77, -0.882 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1942) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1942) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.523, -0.364, -0.492, 0.294, 0.71, -0.401, 0.947, -0.008, 0.235, -0.47, 0.298, -0.603, -0.193, 0.598, 0.122, -0.733, -0.827, 0.491 }; + int lda = 3; + double B[] = { 0.872, 0.441, 0.518, 0.607, -0.04, -0.976, 0.201, -0.136, -0.958, -0.501, -0.549, -0.4 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1943) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1943) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.177, -0.965, 0.589, -0.236, -0.303, -0.301, 0.982, 0.006, -0.73, 0.241, 0.636, -0.672, 0.886, 0.952, 0.501, -0.803, -0.823, -0.09 }; + int lda = 3; + double B[] = { -0.475, -0.646, -0.666, -0.886, 0.04, -0.736, -0.592, -0.995, 0.259, 0.701, -0.033, 0.616 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1944) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1944) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.76, -0.29, -0.601, 0.327, 0.383, 0.883, 0.589, -0.708, 0.912, -0.982, 0.629, 0.879, -0.578, -0.814, 0.168, 0.91, 0.328, 0.223 }; + int lda = 3; + double B[] = { 0.381, 0.829, 0.096, 0.382, 0.664, 0.006, -0.376, -0.338, 0.344, -0.889, -0.175, 0.083 }; + int ldb = 3; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1945) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1945) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.129, -0.161, 0.102, 0.443, -0.138, 0.677, -0.87, 0.327, 0.917, 0.446, 0.798, -0.91, -0.574, 0.333, -0.626, 0.14, 0.109, 0.161 }; + int lda = 3; + double B[] = { -0.689, -0.94, -0.814, 0.761, 0.389, 0.03, -0.175, -0.739, -0.904, 0.463, -0.511, 0.615 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1946) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1946) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { 0.062, 0.756, 0.179, 0.359, -0.047, -0.197, 0.678, 0.873, 0.003, -0.996, 0.507, -0.491, -0.726, -0.833, -0.118, -0.71, 0.714, 0.638 }; + int lda = 3; + double B[] = { -0.614, 0.193, 0.881, 0.538, 0.183, -0.034, 0.099, -0.154, -0.121, 0.842, -0.182, -0.229 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1947) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1947) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.874, 0.171, 0.637, 0.554, 0.852, -0.203, 0.455, 0.619, -0.128, 0.759, 0.342, 0.372, 0.669, -0.537, -0.76, -0.348, -0.714, 0.573 }; + int lda = 3; + double B[] = { -0.434, 0.921, -0.949, 0.282, -0.665, 0.223, -0.633, 0.921, -0.73, 0.457, -0.021, -0.844 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1948) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1948) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 111; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0}; + double A[] = { -0.189, -0.931, 0.414, 0.288, -0.245, 0.252, -0.465, -0.073, 0.327, 0.176, -0.067, 0.1, 0.124, 0.885, -0.731, -0.303, 0.954, -0.763 }; + int lda = 3; + double B[] = { 0.818, 0.948, -0.749, 0.808, -0.959, -0.797, 0.727, 0.701, 0.244, -0.801, 0.354, -0.781 }; + int ldb = 2; + double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1949) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1949) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.65, -0.279, -0.543, -0.097, -0.641, 0.984, 0.507, -0.809 }; + int lda = 2; + double B[] = { -0.176, 0.87, -0.681, 0.409, -0.878, 0.522, 0.348, 0.679, -0.975, -0.815, -0.608, 0.86 }; + int ldb = 3; + double B_expected[] = { 0.256485077177, 1.22837025149, -0.656630178218, 0.911076645728, -0.849544610576, 1.16772760977, -0.193804546743, -0.283833884163, -0.811035478317, 1.16349859839, 0.292241175557, -0.141827660937 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1950) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1950) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.23, -0.597, 0.068, 0.945, 0.045, -0.436, 0.113, 0.035 }; + int lda = 2; + double B[] = { -0.744, -0.465, -0.742, 0.996, -0.835, 0.712, -0.968, 0.053, -0.813, 0.36, 0.572, -0.489 }; + int ldb = 3; + double B_expected[] = { 0.744, 0.465, 0.742, -0.996, 0.835, -0.712, 1.356833, -0.7877, -0.178676, -0.993462, -1.30162, -0.251659 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1951) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1951) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.689, -0.396, 0.415, -0.567, 0.001, 0.513, 0.837, 0.045 }; + int lda = 2; + double B[] = { -0.012, 0.2, 0.22, 0.81, -0.586, -0.198, 0.16, -0.958, -0.125, 0.833, 0.344, 0.213 }; + int ldb = 3; + double B_expected[] = { -0.573154258944, 0.525131422048, 1.33801555643, 0.47629585874, -0.770607912552, -0.160087833623, -0.129249609305, 1.15151282248, 0.0955601670381, -1.00035867087, -0.423449388979, -0.231714190557 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1952) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1952) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.102, 0.86, -0.067, 0.12, 0.92, 0.441, 0.367, -0.104 }; + int lda = 2; + double B[] = { 0.386, 0.59, 0.222, 0.824, 0.091, 0.486, 0.43, 0.766, 0.576, 0.042, 0.013, -0.008 }; + int ldb = 3; + double B_expected[] = { -0.328206, 0.30435, 0.289398, -0.531344, -0.075512, -0.487627, -0.43, -0.766, -0.576, -0.042, -0.013, 0.008 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1953) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1953) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.087, 0.925, -0.315, 0.251, 0.7, -0.223, 0.448, 0.373 }; + int lda = 2; + double B[] = { -0.333, -0.495, 0.995, -0.229, 0.425, -0.269, -0.756, -0.783, -0.214, 0.582, -0.351, -0.095 }; + int ldb = 2; + double B_expected[] = { 0.496880191475, -0.406733596387, -0.965186357327, 2.19761676664, 0.331095906598, 0.428318547163, 1.17655095681, 0.263745306399, -0.645240814927, -0.170663836866, 1.18578937767, -0.829739852214 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1954) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1954) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.717, 0.572, -0.304, 0.878, 0.625, -0.615, -0.565, -0.643 }; + int lda = 2; + double B[] = { -0.383, -0.669, -0.043, -0.09, -0.999, -0.427, 0.834, 0.539, -0.973, -0.481, 0.071, -0.71 }; + int ldb = 2; + double B_expected[] = { 0.383, 0.669, -0.60781, -0.09258, 0.999, 0.427, -1.72098, -0.19149, 0.973, 0.481, -0.97494, 1.00777 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1955) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1955) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.143, -0.022, 0.487, 0.444, 0.138, -0.871, 0.572, -0.093 }; + int lda = 2; + double B[] = { -0.073, -0.9, -0.688, 0.436, -0.213, -0.733, 0.809, -0.618, 0.696, 0.259, 0.494, 0.162 }; + int ldb = 2; + double B_expected[] = { -6.10129128737, 3.22195959384, 1.29255909931, -0.552083922664, 8.05253150033, 8.35261031753, -1.54904967648, 0.828563601552, -3.66721033067, 1.50334288416, -0.796532800529, -0.412722990296 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1956) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1956) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.544, 0.918, -0.524, 0.547, -0.839, 0.4, -0.548, 0.49 }; + int lda = 2; + double B[] = { 0.475, -0.594, 0.252, -0.717, 0.867, 0.07, 0.264, 0.538, 0.028, 0.482, -0.59, -0.533 }; + int ldb = 2; + double B_expected[] = { -0.214849, 1.107552, -0.252, 0.717, -1.299622, -0.207504, -0.264, -0.538, 0.572711, -0.525438, 0.59, 0.533 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1957) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1957) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.038, -0.116, -0.476, -0.818, 0.961, 0.271, -0.593, 0.548, -0.86, 0.429, -0.396, -0.559, 0.766, -0.326, -0.335, 0.633, -0.532, 0.317 }; + int lda = 3; + double B[] = { -0.459, 0.904, 0.887, 0.07, -0.497, -0.48, -0.313, 0.864, -0.029, -0.754, -0.566, -0.108 }; + int ldb = 3; + double B_expected[] = { -4.58258258525, -3.00717937382, 0.0668903493808, 0.800759804641, -0.292673260098, -1.0766492922, -0.911020412982, 7.68812066826, -0.0359723342287, -0.157963939743, -0.695872108638, -0.617653117365 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1958) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1958) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.886, 0.945, 0.065, 0.882, -0.46, -0.095, 0.823, -0.245, -0.825, 0.904, -0.214, -0.268, -0.935, -0.017, 0.902, 0.561, 0.954, -0.665 }; + int lda = 3; + double B[] = { 0.076, -0.043, 0.873, -0.831, -0.329, -0.896, -0.174, 0.653, 0.489, 0.25, -0.896, 0.609 }; + int ldb = 3; + double B_expected[] = { 1.037824842, 1.333886264, -1.042722, 1.110916, 0.329, 0.896, 0.529073224, -0.720680322, -0.134044, -0.140198, 0.896, -0.609 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1959) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1959) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.691, -0.056, -0.339, -0.483, -0.975, -0.052, -0.198, 0.576, -0.075, 0.718, -0.321, 0.728, -0.124, 0.774, 0.685, -0.112, 0.178, 0.275 }; + int lda = 3; + double B[] = { -0.062, -0.391, 0.326, 0.42, -0.203, 0.45, 0.338, 0.991, -0.47, -0.363, 0.766, -0.961 }; + int ldb = 3; + double B_expected[] = { -0.134697690677, -0.554930433172, -0.526377715671, 0.991348747823, -2.94323584375, -1.92805449726, 0.601422754501, 1.38541291715, 0.201151053335, -1.95287726277, 5.96201044303, 2.1797020274 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1960) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1960) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.318, 0.067, -0.097, 0.359, -0.688, 0.307, -0.63, -0.616, 0.193, 0.817, -0.792, -0.117, -0.501, -0.929, -0.595, -0.144, 0.453, 0.658 }; + int lda = 3; + double B[] = { -0.249, -0.206, 0.424, -0.681, -0.464, 0.21, 0.541, 0.082, 0.803, -0.461, -0.638, 0.358 }; + int ldb = 3; + double B_expected[] = { 0.249, 0.206, -0.394026, 0.964164, 0.024089914, 0.641464836, -0.541, -0.082, -1.093318, 0.076084, -0.218343306, -1.013838812 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1961) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1961) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.691, 0.808, -0.178, 0.489, 0.159, -0.646, -0.692, -0.968, -0.146, -0.281, -0.385, 0.773, 0.704, 0.782, 0.551, -0.727, 0.669, 0.858 }; + int lda = 3; + double B[] = { -0.657, -0.69, -0.051, 0.28, -0.846, 0.304, 0.052, 0.543, 0.613, -0.98, 0.983, -0.484 }; + int ldb = 2; + double B_expected[] = { 2.42007211075, -0.148130095453, 4.93683906416, -0.804178199722, 1.76852672271, 0.633536755193, 4.41638755104, -0.0400468884046, 0.363887727302, 0.998182854971, -0.204739276437, 0.986048279795 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1962) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1962) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.244, -0.925, -0.539, 0.422, 0.285, -0.954, -0.347, -0.255, -0.616, -0.979, 0.631, -0.864, -0.053, -0.715, -0.749, -0.973, -0.409, -0.247 }; + int lda = 3; + double B[] = { 0.922, -0.728, 0.588, -0.715, -0.92, -0.065, -0.583, 0.178, 0.996, 0.215, -0.614, -0.443 }; + int ldb = 2; + double B_expected[] = { -0.416484258, -0.267425916, -0.851455486, 1.594186448, 0.383191, -1.065143, 0.611847, 0.751229, -0.996, -0.215, 0.614, 0.443 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1963) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1963) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { 0.992, 0.172, -0.646, 0.067, -0.823, -0.013, -0.55, -0.438, -0.44, -0.302, 0.99, -0.373, 0.513, -0.106, -0.591, -0.504, 0.929, -0.318 }; + int lda = 3; + double B[] = { 0.467, 0.227, 0.988, -0.709, -0.272, -0.601, 0.719, -0.133, 0.203, 0.937, -0.382, -0.334 }; + int ldb = 2; + double B_expected[] = { -0.495544804508, -0.142909570186, -0.846593689328, 0.861506163875, -0.485462670276, -0.898345893497, 1.07522946065, -2.43403194583, 0.315527055267, -0.271726799352, -1.73234815305, 3.5434654009 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1964) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1964) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 112; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {-1, 0}; + double A[] = { -0.692, -0.245, -0.874, 0.77, 0.07, 0.01, 0.018, -0.42, -0.405, -0.387, 0.888, -0.912, -0.81, 0.314, 0.66, -0.895, -0.556, 0.157 }; + int lda = 3; + double B[] = { -0.801, 0.542, 0.699, 0.574, -0.56, 0.043, 0.742, -0.331, -0.614, 0.776, -0.335, 0.131 }; + int ldb = 2; + double B_expected[] = { 0.801, -0.542, -0.699, -0.574, 0.842734, -1.133478, -1.794906, 0.367554, 0.837894144, 1.029031872, 1.63685728, -2.047172224 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1965) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1965) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.035, -0.456, 0.152, 0.976, 0.687, -0.527, -0.571, 0.832 }; + int lda = 2; + double B[] = { -0.868, 0.033, -0.131, -0.936, 0.993, 0.104, -0.684, 0.851, 0.523, 0.836, -0.205, 0.319 }; + int ldb = 3; + double B_expected[] = { -0.188683836853, 0.0217191541444, -0.044222393276, -0.201868895253, 0.218228063549, 0.00605705652583, 0.252579293874, 0.0800538768738, -0.099911150161, 0.0758372341381, -0.116723296822, -0.16542230206 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1966) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1966) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.481, -0.442, 0.69, 0.415, 0.983, -0.466, 0.503, -0.147 }; + int lda = 2; + double B[] = { -0.287, -0.777, -0.187, 0.061, 0.631, 0.797, 0.833, -0.49, -0.188, 0.386, -0.904, -0.793 }; + int ldb = 3; + double B_expected[] = { 0.0777, -0.0287, -0.0061, -0.0187, -0.0797, 0.0631, 0.0072975, 0.1353485, -0.0266305, -0.0084285, 0.1081065, -0.1670145 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1967) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1967) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.286, 0.025, -0.111, 0.724, -0.973, -0.071, 0.527, -0.334 }; + int lda = 2; + double B[] = { -0.381, -0.131, 0.33, 0.09, 0.35, 0.062, -0.874, 0.252, 0.924, 0.251, 0.559, -0.619 }; + int ldb = 3; + double B_expected[] = { 0.38447496828, 0.401499279514, -0.210140860451, -0.584596680596, -0.443343106286, -0.127686958741, -0.109102585509, -0.096697792106, 0.045298174859, 0.146623168116, 0.131759250934, 0.0225662432408 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1968) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1968) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.862, -0.003, 0.975, 0.364, -0.996, 0.909, -0.316, -0.816 }; + int lda = 2; + double B[] = { 0.167, 0.961, 0.116, 0.675, 0.086, 0.259, -0.483, 0.898, 0.434, 0.723, 0.505, 0.042 }; + int ldb = 3; + double B_expected[] = { -0.1416361, -0.113035, -0.1789614, -0.0108943, -0.0759877, 0.0550802, -0.0898, -0.0483, -0.0723, 0.0434, -0.0042, 0.0505 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1969) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1969) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.826, -0.025, 0.638, -0.183, -0.184, 0.806, 0.131, 0.764 }; + int lda = 2; + double B[] = { -0.038, 0.14, -0.31, -0.494, -0.974, -0.396, -0.217, 0.519, -0.656, -0.737, 0.383, -0.03 }; + int ldb = 2; + double B_expected[] = { 0.0167945280502, 0.00510879322186, 0.0315562985639, 0.0579039669012, -0.0514636821443, 0.116360058046, 0.0192833017545, -0.206389577002, -0.0915450409357, 0.0766481525141, 0.0107002286761, -0.100817314679 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1970) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1970) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.282, -0.433, -0.793, -0.008, -0.999, 0.377, -0.979, 0.421 }; + int lda = 2; + double B[] = { 0.622, -0.722, 0.605, -0.877, 0.935, -0.906, 0.719, -0.607, 0.022, -0.326, -0.905, 0.323 }; + int ldb = 2; + double B_expected[] = { 0.0722, 0.0622, 0.1363784, 0.1498572, 0.0906, 0.0935, 0.1159599, 0.1994627, 0.0326, 0.0022, -0.000562, -0.076012 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1971) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1971) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.934, 0.007, -0.958, 0.434, 0.263, 0.776, 0.097, 0.83 }; + int lda = 2; + double B[] = { -0.405, 0.251, 0.13, 0.388, -0.664, -0.732, -0.779, -0.5, 0.775, -0.299, -0.45, 0.923 }; + int ldb = 2; + double B_expected[] = { -0.026920633021, -0.0986978374343, -0.020841203536, -0.0443113292253, 0.157683298836, 0.0261984465224, 0.099536165222, 0.0486084240644, 0.127725373746, -0.0161073528761, 0.0406652355905, -0.115957262473 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1972) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1972) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 141; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.169, -0.768, -0.529, 0.236, -0.506, 0.691, -0.786, -0.36 }; + int lda = 2; + double B[] = { 0.289, -0.985, 0.931, 0.652, -0.861, -0.51, -0.753, -0.542, -0.822, 0.174, 0.799, 0.8 }; + int ldb = 2; + double B_expected[] = { 0.0420376, 0.0627627, -0.0652, 0.0931, 0.0974426, -0.1131425, 0.0542, -0.0753, -0.0785764, -0.0588129, -0.08, 0.0799 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1973) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1973) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.834, 0.53, 0.278, 0.293, 0.66, 0.497, -0.664, 0.429, -0.294, -0.661, 0.52, -0.247, 0.392, -0.227, 0.209, -0.902, 0.843, 0.37 }; + int lda = 3; + double B[] = { -0.738, 0.166, 0.721, -0.541, -0.963, -0.832, -0.376, -0.718, 0.765, -0.547, 0.451, -0.581 }; + int ldb = 3; + double B_expected[] = { -0.115188282202, -0.000411685478887, 0.105497263516, -0.0083759187965, 0.124793492766, -0.0594619308146, 0.0499107469, -0.0152598288542, 0.00927285309719, -0.0831454824908, 0.0380996260983, 0.0702216627003 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1974) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1974) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.531, -0.691, 0.801, 0.437, 0.402, 0.788, 0.824, 0.599, -0.362, 0.076, 0.192, 0.229, -0.259, -0.279, 0.79, -0.797, 0.728, 0.397 }; + int lda = 3; + double B[] = { -0.049, 0.642, 0.36, 0.428, 0.523, -0.612, 0.459, -0.664, 0.328, 0.513, -0.225, 0.273 }; + int ldb = 3; + double B_expected[] = { -0.0941948813, -0.0387898759, -0.0665271, 0.0399732, 0.0612, 0.0523, 0.1143807788, -0.0091687866, -0.0409059, 0.0308683, -0.0273, -0.0225 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1975) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1975) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.169, -0.092, -0.13, 0.001, 0.573, 0.256, 0.632, -0.09, -0.942, 0.948, 0.595, -0.337, 0.01, -0.786, 0.944, 0.906, -0.832, -0.566 }; + int lda = 3; + double B[] = { -0.461, -0.112, 0.674, -0.268, -0.286, -0.657, 0.329, 0.91, 0.73, 0.488, -0.363, -0.01 }; + int ldb = 3; + double B_expected[] = { -0.0634274139095, -0.238252532073, -0.142693434208, -0.0938542376785, -0.0907100858097, -0.0412217911039, -0.333617825793, 0.376288993923, -0.0317846476268, 0.175075250306, -0.125200687799, -0.118937960805 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1976) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1976) imag"); + }; + }; + }; + + + { + int order = 101; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.53, 0.141, 0.235, 0.474, -0.964, -0.441, 0.197, -0.703, 0.942, 0.98, 0.741, 0.499, -0.738, 0.234, -0.27, -0.158, 0.804, -0.878 }; + int lda = 3; + double B[] = { 0.46, -0.508, 0.918, -0.516, 0.012, -0.451, -0.676, 0.551, -0.38, 0.053, 0.645, 0.785 }; + int ldb = 3; + double B_expected[] = { 0.0508, 0.046, 0.0739304, 0.0470256, 0.0992176528, 0.0480511088, -0.0551, -0.0676, -0.0419681, 0.0140525, -0.112456492, 0.0121429348 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1977) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1977) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { 0.286, 0.548, 0.637, -0.856, -0.739, 0.307, -0.049, -0.342, -0.39, 0.618, -0.757, -0.453, -0.533, 0.131, 0.431, 0.087, -0.776, -0.439 }; + int lda = 3; + double B[] = { 0.968, 0.032, 0.013, 0.684, -0.485, 0.613, 0.316, 0.812, -0.459, 0.34, -0.268, -0.565 }; + int ldb = 2; + double B_expected[] = { -0.126374952238, 0.0484874156039, -0.0755178690743, -0.200973083054, 0.138328459491, -0.0263170966956, 0.00492064241274, -0.0787874374991, 0.00784239970713, 0.0635860998343, -0.0699577429529, -0.00504052726328 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1978) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1978) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 121; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.911, 0.645, -0.525, 0.045, -0.654, -0.896, -0.39, 0.419, 0.867, 0.561, -0.842, -0.835, -0.249, -0.384, 0.575, -0.41, 0.105, -0.282 }; + int lda = 3; + double B[] = { 0.777, 0.361, 0.535, 0.441, 0.508, 0.439, -0.347, 0.131, -0.874, 0.646, 0.917, 0.746 }; + int ldb = 2; + double B_expected[] = { -0.155796389, 0.112639999, 0.0226368685, 0.111048763, -0.042589, 0.127541, 0.067392, -0.0568415, -0.0646, -0.0874, -0.0746, 0.0917 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1979) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1979) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 131; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.519, 0.318, -0.318, 0.73, 0.721, 0.302, -0.604, 0.721, 0.387, 0.673, -0.549, -0.136, 0.101, 0.676, -0.064, -0.659, -0.141, 0.991 }; + int lda = 3; + double B[] = { -0.856, -0.128, 0.721, -0.511, 0.175, -0.341, 0.832, -0.662, 0.652, -0.939, -0.775, -0.899 }; + int ldb = 2; + double B_expected[] = { 0.055542329649, 0.130900846188, -0.133470180979, -0.0571415846795, -0.13942012508, 0.0150972236507, 0.0782230770838, 0.0522994181773, -0.00621452256957, -0.0615971232698, 0.0222285648871, 0.258910370231 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1980) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1980) imag"); + }; + }; + }; + + + { + int order = 102; + int side = 142; + int uplo = 122; + int trans = 113; + int diag = 132; + int M = 2; + int N = 3; + double alpha[2] = {0, 0.1}; + double A[] = { -0.092, -0.392, 0.108, -0.918, 0.505, -0.974, 0.213, 0.97, -0.465, 0.604, -0.737, -0.578, -0.051, -0.43, 0.066, -0.934, -0.347, 0.157 }; + int lda = 3; + double B[] = { -0.489, 0.673, -0.232, 0.668, -0.396, -0.569, 0.763, 0.581, 0.117, -0.249, 0.272, -0.832 }; + int ldb = 2; + double B_expected[] = { -0.0673, -0.0489, -0.0668, -0.0232, 0.0192782, 0.0274626, -0.0721832, 0.140128, 0.0413393162, 0.1110418366, 0.1221321656, 0.2489754256 }; + cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); + { + int i; + for (i = 0; i < 6; i++) { + gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1981) real"); + gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1981) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/test_trsv.c b/gsl-1.9/cblas/test_trsv.c new file mode 100644 index 0000000..39f5083 --- /dev/null +++ b/gsl-1.9/cblas/test_trsv.c @@ -0,0 +1,1739 @@ +#include <gsl/gsl_test.h> +#include <gsl/gsl_ieee_utils.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> + +#include "tests.h" + +void +test_trsv (void) { +const double flteps = 1e-4, dbleps = 1e-6; + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1150)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1151)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1152)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1153)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1154)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1155)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.349749f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1156)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.995f }; + float X[] = { 0.348f }; + int incX = -1; + float x_expected[] = { 0.348f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1157)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1158)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1159)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1160)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1161)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1162)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1163)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.42623f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1164)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.793f }; + float X[] = { 0.338f }; + int incX = -1; + float x_expected[] = { 0.338f }; + cblas_strsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], flteps, "strsv(case 1165)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1166)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1167)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1168)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1169)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1170)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1171)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { -2.25238095238 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1172)"); + } + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { -0.21 }; + double X[] = { 0.473 }; + int incX = -1; + double x_expected[] = { 0.473 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1173)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1174)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1175)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1176)"); + } + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1177)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1178)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1179)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 1.30882352941 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1180)"); + } + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.748 }; + double X[] = { 0.979 }; + int incX = -1; + double x_expected[] = { 0.979 }; + cblas_dtrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[i], x_expected[i], dbleps, "dtrsv(case 1181)"); + } + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1182) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1182) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1183) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1183) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1184) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1184) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1185) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1185) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1186) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1186) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1187) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1187) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -1.55112f, -0.372004f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1188) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1188) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.529f, -0.348f }; + float X[] = { -0.95f, 0.343f }; + int incX = -1; + float x_expected[] = { -0.95f, 0.343f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1189) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1189) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1190) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1190) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1191) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1191) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1192) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1192) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1193) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1193) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1194) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1194) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1195) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1195) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 1.43572f, -0.843108f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1196) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1196) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.6f, 0.041f }; + float X[] = { 0.896f, -0.447f }; + int incX = -1; + float x_expected[] = { 0.896f, -0.447f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1197) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1197) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1198) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1198) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1199) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1199) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1200) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1200) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1201) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1201) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1202) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1202) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1203) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1203) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.289642f, 0.951701f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1204) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1204) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + float A[] = { 0.397f, 0.683f }; + float X[] = { 0.765f, 0.18f }; + int incX = -1; + float x_expected[] = { 0.765f, 0.18f }; + cblas_ctrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], flteps, "ctrsv(case 1205) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], flteps, "ctrsv(case 1205) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1206) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1206) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1207) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1207) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1208) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1208) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1209) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1209) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1210) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1210) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1211) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1211) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.471957414573, -0.173714770642 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1212) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1212) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 111; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.977, -0.955 }; + double X[] = { -0.627, 0.281 }; + int incX = -1; + double x_expected[] = { -0.627, 0.281 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1213) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1213) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1214) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1214) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1215) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1215) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1216) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1216) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1217) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1217) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1218) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1218) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1219) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1219) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 5.18357980622, -0.587200407955 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1220) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1220) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 112; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.076, -0.16 }; + double X[] = { 0.3, -0.874 }; + int incX = -1; + double x_expected[] = { 0.3, -0.874 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1221) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1221) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1222) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1222) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1223) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1223) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1224) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1224) imag"); + }; + }; + }; + + + { + int order = 101; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1225) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1225) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1226) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1226) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 121; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1227) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1227) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 131; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.371144591432, -0.0712292456544 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1228) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1228) imag"); + }; + }; + }; + + + { + int order = 102; + int trans = 113; + int uplo = 122; + int diag = 132; + int N = 1; + int lda = 1; + double A[] = { 0.372, -0.745 }; + double X[] = { -0.085, -0.303 }; + int incX = -1; + double x_expected[] = { -0.085, -0.303 }; + cblas_ztrsv(order, uplo, trans, diag, N, A, lda, X, incX); + { + int i; + for (i = 0; i < 1; i++) { + gsl_test_rel(X[2*i], x_expected[2*i], dbleps, "ztrsv(case 1229) real"); + gsl_test_rel(X[2*i+1], x_expected[2*i+1], dbleps, "ztrsv(case 1229) imag"); + }; + }; + }; + + +} diff --git a/gsl-1.9/cblas/tests.c b/gsl-1.9/cblas/tests.c new file mode 100644 index 0000000..af00945 --- /dev/null +++ b/gsl-1.9/cblas/tests.c @@ -0,0 +1,44 @@ + test_dot (); + test_nrm2 (); + test_asum (); + test_amax (); + test_axpy (); + test_copy (); + test_swap (); + test_scal (); + test_rotg (); + test_rot (); + test_rotmg (); + test_rotm (); + test_gemv (); + test_gbmv (); + test_trmv (); + test_tbmv (); + test_tpmv (); + test_symv (); + test_hemv (); + test_hbmv (); + test_sbmv (); + test_hpmv (); + test_spmv (); + test_trsv (); + test_tbsv (); + test_tpsv (); + test_ger (); + test_syr (); + test_her (); + test_hpr (); + test_spr (); + test_syr2 (); + test_spr2 (); + test_her2 (); + test_hpr2 (); + test_gemm (); + test_symm (); + test_hemm (); + test_syrk (); + test_herk (); + test_syr2k (); + test_her2k (); + test_trmm (); + test_trsm (); diff --git a/gsl-1.9/cblas/tests.h b/gsl-1.9/cblas/tests.h new file mode 100644 index 0000000..9bfb0fa --- /dev/null +++ b/gsl-1.9/cblas/tests.h @@ -0,0 +1,44 @@ +void test_dot (void); +void test_nrm2 (void); +void test_asum (void); +void test_amax (void); +void test_axpy (void); +void test_copy (void); +void test_swap (void); +void test_scal (void); +void test_rotg (void); +void test_rot (void); +void test_rotmg (void); +void test_rotm (void); +void test_gemv (void); +void test_gbmv (void); +void test_trmv (void); +void test_tbmv (void); +void test_tpmv (void); +void test_symv (void); +void test_hemv (void); +void test_hbmv (void); +void test_sbmv (void); +void test_hpmv (void); +void test_spmv (void); +void test_trsv (void); +void test_tbsv (void); +void test_tpsv (void); +void test_ger (void); +void test_syr (void); +void test_her (void); +void test_hpr (void); +void test_spr (void); +void test_syr2 (void); +void test_spr2 (void); +void test_her2 (void); +void test_hpr2 (void); +void test_gemm (void); +void test_symm (void); +void test_hemm (void); +void test_syrk (void); +void test_herk (void); +void test_syr2k (void); +void test_her2k (void); +void test_trmm (void); +void test_trsm (void); diff --git a/gsl-1.9/cblas/xerbla.c b/gsl-1.9/cblas/xerbla.c new file mode 100644 index 0000000..3991641 --- /dev/null +++ b/gsl-1.9/cblas/xerbla.c @@ -0,0 +1,44 @@ +/* xerbla.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <config.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_xerbla (int p, const char *rout, const char *form, ...) +{ + va_list ap; + + va_start (ap, form); + + if (p) + { + fprintf (stderr, "Parameter %d to routine %s was incorrect\n", p, rout); + } + + vfprintf (stderr, form, ap); + va_end (ap); + + abort (); +} diff --git a/gsl-1.9/cblas/zaxpy.c b/gsl-1.9/cblas/zaxpy.c new file mode 100644 index 0000000..d648401 --- /dev/null +++ b/gsl-1.9/cblas/zaxpy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zaxpy (const int N, const void *alpha, const void *X, const int incX, + void *Y, const int incY) +{ +#define BASE double +#include "source_axpy_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zcopy.c b/gsl-1.9/cblas/zcopy.c new file mode 100644 index 0000000..5e80eb4 --- /dev/null +++ b/gsl-1.9/cblas/zcopy.c @@ -0,0 +1,12 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zcopy (const int N, const void *X, const int incX, void *Y, + const int incY) +{ +#define BASE double +#include "source_copy_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zdotc_sub.c b/gsl-1.9/cblas/zdotc_sub.c new file mode 100644 index 0000000..43af96e --- /dev/null +++ b/gsl-1.9/cblas/zdotc_sub.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zdotc_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE double +#define CONJ_SIGN (-1.0) +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-1.9/cblas/zdotu_sub.c b/gsl-1.9/cblas/zdotu_sub.c new file mode 100644 index 0000000..65b9898 --- /dev/null +++ b/gsl-1.9/cblas/zdotu_sub.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zdotu_sub (const int N, const void *X, const int incX, const void *Y, + const int incY, void *result) +{ +#define BASE double +#define CONJ_SIGN 1.0 +#include "source_dot_c.h" +#undef CONJ_SIGN +#undef BASE +} diff --git a/gsl-1.9/cblas/zdscal.c b/gsl-1.9/cblas/zdscal.c new file mode 100644 index 0000000..6167664 --- /dev/null +++ b/gsl-1.9/cblas/zdscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zdscal (const int N, const double alpha, void *X, const int incX) +{ +#define BASE double +#include "source_scal_c_s.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zgbmv.c b/gsl-1.9/cblas/zgbmv.c new file mode 100644 index 0000000..dc87576 --- /dev/null +++ b/gsl-1.9/cblas/zgbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const int KL, const int KU, + const void *alpha, const void *A, const int lda, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE double +#include "source_gbmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zgemm.c b/gsl-1.9/cblas/zgemm.c new file mode 100644 index 0000000..2046558 --- /dev/null +++ b/gsl-1.9/cblas/zgemm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_TRANSPOSE TransB, const int M, const int N, + const int K, const void *alpha, const void *A, const int lda, + const void *B, const int ldb, const void *beta, void *C, + const int ldc) +{ +#define BASE double +#include "source_gemm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zgemv.c b/gsl-1.9/cblas/zgemv.c new file mode 100644 index 0000000..41eca39 --- /dev/null +++ b/gsl-1.9/cblas/zgemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, + const int M, const int N, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE double +#include "source_gemv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zgerc.c b/gsl-1.9/cblas/zgerc.c new file mode 100644 index 0000000..9478c3c --- /dev/null +++ b/gsl-1.9/cblas/zgerc.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zgerc (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_gerc.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zgeru.c b/gsl-1.9/cblas/zgeru.c new file mode 100644 index 0000000..d0f4b96 --- /dev/null +++ b/gsl-1.9/cblas/zgeru.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zgeru (const enum CBLAS_ORDER order, const int M, const int N, + const void *alpha, const void *X, const int incX, const void *Y, + const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_geru.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhbmv.c b/gsl-1.9/cblas/zhbmv.c new file mode 100644 index 0000000..25692ca --- /dev/null +++ b/gsl-1.9/cblas/zhbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const int K, const void *alpha, const void *A, + const int lda, const void *X, const int incX, const void *beta, + void *Y, const int incY) +{ +#define BASE double +#include "source_hbmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhemm.c b/gsl-1.9/cblas/zhemm.c new file mode 100644 index 0000000..d6b69fe --- /dev/null +++ b/gsl-1.9/cblas/zhemm.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_hemm.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhemv.c b/gsl-1.9/cblas/zhemv.c new file mode 100644 index 0000000..5bc76fa --- /dev/null +++ b/gsl-1.9/cblas/zhemv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *A, const int lda, + const void *X, const int incX, const void *beta, void *Y, + const int incY) +{ +#define BASE double +#include "source_hemv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zher.c b/gsl-1.9/cblas/zher.c new file mode 100644 index 0000000..c3e3a6e --- /dev/null +++ b/gsl-1.9/cblas/zher.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *A, const int lda) +{ +#define BASE double +#include "source_her.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zher2.c b/gsl-1.9/cblas/zher2.c new file mode 100644 index 0000000..db7e1e6 --- /dev/null +++ b/gsl-1.9/cblas/zher2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *A, const int lda) +{ +#define BASE double +#include "source_her2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zher2k.c b/gsl-1.9/cblas/zher2k.c new file mode 100644 index 0000000..be73ab4 --- /dev/null +++ b/gsl-1.9/cblas/zher2k.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const double beta, void *C, const int ldc) +{ +#define BASE double +#include "source_her2k.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zherk.c b/gsl-1.9/cblas/zherk.c new file mode 100644 index 0000000..ccfd1d9 --- /dev/null +++ b/gsl-1.9/cblas/zherk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const double alpha, const void *A, const int lda, + const double beta, void *C, const int ldc) +{ +#define BASE double +#include "source_herk.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhpmv.c b/gsl-1.9/cblas/zhpmv.c new file mode 100644 index 0000000..518c264 --- /dev/null +++ b/gsl-1.9/cblas/zhpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *Ap, const void *X, + const int incX, const void *beta, void *Y, const int incY) +{ +#define BASE double +#include "source_hpmv.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhpr.c b/gsl-1.9/cblas/zhpr.c new file mode 100644 index 0000000..964e3af --- /dev/null +++ b/gsl-1.9/cblas/zhpr.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const double alpha, const void *X, const int incX, + void *Ap) +{ +#define BASE double +#include "source_hpr.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zhpr2.c b/gsl-1.9/cblas/zhpr2.c new file mode 100644 index 0000000..971af91 --- /dev/null +++ b/gsl-1.9/cblas/zhpr2.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zhpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const int N, const void *alpha, const void *X, const int incX, + const void *Y, const int incY, void *Ap) +{ +#define BASE double +#include "source_hpr2.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zscal.c b/gsl-1.9/cblas/zscal.c new file mode 100644 index 0000000..2667743 --- /dev/null +++ b/gsl-1.9/cblas/zscal.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zscal (const int N, const void *alpha, void *X, const int incX) +{ +#define BASE double +#include "source_scal_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zswap.c b/gsl-1.9/cblas/zswap.c new file mode 100644 index 0000000..9cf6796 --- /dev/null +++ b/gsl-1.9/cblas/zswap.c @@ -0,0 +1,11 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zswap (const int N, void *X, const int incX, void *Y, const int incY) +{ +#define BASE double +#include "source_swap_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zsymm.c b/gsl-1.9/cblas/zsymm.c new file mode 100644 index 0000000..dcc6d2f --- /dev/null +++ b/gsl-1.9/cblas/zsymm.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const int M, const int N, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_symm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zsyr2k.c b/gsl-1.9/cblas/zsyr2k.c new file mode 100644 index 0000000..68fe0c5 --- /dev/null +++ b/gsl-1.9/cblas/zsyr2k.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, const void *B, + const int ldb, const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_syr2k_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/zsyrk.c b/gsl-1.9/cblas/zsyrk.c new file mode 100644 index 0000000..6593642 --- /dev/null +++ b/gsl-1.9/cblas/zsyrk.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_zsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE Trans, const int N, const int K, + const void *alpha, const void *A, const int lda, + const void *beta, void *C, const int ldc) +{ +#define BASE double +#include "source_syrk_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztbmv.c b/gsl-1.9/cblas/ztbmv.c new file mode 100644 index 0000000..b3510e8 --- /dev/null +++ b/gsl-1.9/cblas/ztbmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ztbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_tbmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztbsv.c b/gsl-1.9/cblas/ztbsv.c new file mode 100644 index 0000000..b9f35e5 --- /dev/null +++ b/gsl-1.9/cblas/ztbsv.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ztbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const int K, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_tbsv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztpmv.c b/gsl-1.9/cblas/ztpmv.c new file mode 100644 index 0000000..be6dee3 --- /dev/null +++ b/gsl-1.9/cblas/ztpmv.c @@ -0,0 +1,13 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ztpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE double +#include "source_tpmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztpsv.c b/gsl-1.9/cblas/ztpsv.c new file mode 100644 index 0000000..c7ac791 --- /dev/null +++ b/gsl-1.9/cblas/ztpsv.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ztpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *Ap, void *X, const int incX) +{ +#define BASE double +#include "source_tpsv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztrmm.c b/gsl-1.9/cblas/ztrmm.c new file mode 100644 index 0000000..f55b1d2 --- /dev/null +++ b/gsl-1.9/cblas/ztrmm.c @@ -0,0 +1,15 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ztrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE double +#include "source_trmm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztrmv.c b/gsl-1.9/cblas/ztrmv.c new file mode 100644 index 0000000..1ed58be --- /dev/null +++ b/gsl-1.9/cblas/ztrmv.c @@ -0,0 +1,14 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +void +cblas_ztrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_trmv_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztrsm.c b/gsl-1.9/cblas/ztrsm.c new file mode 100644 index 0000000..b44b0e1 --- /dev/null +++ b/gsl-1.9/cblas/ztrsm.c @@ -0,0 +1,17 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ztrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, + const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, + const enum CBLAS_DIAG Diag, const int M, const int N, + const void *alpha, const void *A, const int lda, void *B, + const int ldb) +{ +#define BASE double +#include "source_trsm_c.h" +#undef BASE +} diff --git a/gsl-1.9/cblas/ztrsv.c b/gsl-1.9/cblas/ztrsv.c new file mode 100644 index 0000000..54d43ae --- /dev/null +++ b/gsl-1.9/cblas/ztrsv.c @@ -0,0 +1,16 @@ +#include <gsl/gsl_math.h> +#include <gsl/gsl_cblas.h> +#include "cblas.h" + +#include "hypot.c" + +void +cblas_ztrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, + const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, + const int N, const void *A, const int lda, void *X, + const int incX) +{ +#define BASE double +#include "source_trsv_c.h" +#undef BASE +} |