From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3418 invoked by alias); 31 Aug 2013 18:11:20 -0000 Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org Received: (qmail 3403 invoked by uid 89); 31 Aug 2013 18:11:19 -0000 Received: from avasout05.plus.net (HELO avasout05.plus.net) (84.93.230.250) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 31 Aug 2013 18:11:19 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_20,HELO_MISC_IP,RDNS_NONE autolearn=no version=3.3.2 X-HELO: avasout05.plus.net Received: from [192.168.1.21] ([212.159.26.30]) by avasout05 with smtp id KWBC1m0010eyEos01WBDmF; Sat, 31 Aug 2013 19:11:13 +0100 X-CM-Score: 0.00 X-CNFS-Analysis: v=2.1 cv=ErXr80sA c=1 sm=1 tr=0 a=nO6JWm9Dsne7RoCvRGnC0w==:117 a=nO6JWm9Dsne7RoCvRGnC0w==:17 a=0Bzu9jTXAAAA:8 a=Wtn52_hbDy8A:10 a=5Aru1-UZwm8A:10 a=ihvODaAuJD4A:10 a=EBOSESyhAAAA:8 a=LbmJLpT3UyIA:10 a=r77TgQKjGQsHNAKrUKIA:9 a=9iDbn-4jx3cA:10 a=cKsnjEOsciEA:10 a=abeS9mvP6Cq7UUxoXqYA:9 a=wPNLvfGTeEIA:10 a=oK2ZhQAOwx6JFrCWKecA:9 a=pILNOxqGKmIA:10 X-AUTH: gladman+brg:2500 Message-ID: <522231C2.1060908@gladman.plus.com> Date: Sat, 31 Aug 2013 18:11:00 -0000 From: Brian Gladman User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: gsl-discuss@sourceware.org Subject: Issue with Mathieu Function Code Content-Type: multipart/mixed; boundary="------------080105060003050107050704" X-SW-Source: 2013-q3/txt/msg00002.txt.bz2 This is a multi-part message in MIME format. --------------080105060003050107050704 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-length: 1142 The GSL special functions are each supposed to have two alternative functional interfaces, a pure one: double function(x, ...) and one allowing for full error returns: int function_e(x, ... gsl_sf_result * result) But the Mathieu function code doesn't follow this convention. It doesn't offer the former interface at all and uses the second convention for all its functions BUT without the '_e' name extension on its function declarations. This is quite error prone since it is easy to assume that *gsl_sf_result is simply a reference to a double when in fact it is a structure that is longer than this (a library user on Windows made exactly this mistake and wondered why his code was causing an illegal access exception). I am doubtful that this is an intentional feature of the Mathieu function code so I have created the attached patch to update the code to use the normal conventions of the GSL special functions. (this needs testing since I have only tried it on WIndows). If this is adopted, the documentation will need updating as well (unfortunately I am unable to do this). with my best regards, Brian Gladman --------------080105060003050107050704 Content-Type: text/plain; charset=windows-1252; name="mathieu.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="mathieu.patch" Content-length: 14254 Left file: C:\Users\brian\AppData\Local\Temp\qbzr\bzr-diff-kryjkr\1\specfunc\gsl_sf_mathieu.h Right file: C:\Users\brian\Documents\Visual Studio 2013\Projects\gsl\specfunc\gsl_sf_mathieu.h 70,71c70,73 < int gsl_sf_mathieu_a(int order, double qq, gsl_sf_result *result); < int gsl_sf_mathieu_b(int order, double qq, gsl_sf_result *result); --- > int gsl_sf_mathieu_a_e(int order, double qq, gsl_sf_result *result); > double gsl_sf_mathieu_a(int order, double qq); > int gsl_sf_mathieu_b_e(int order, double qq, gsl_sf_result *result); > double gsl_sf_mathieu_b(int order, double qq); 83,84c85,88 < int gsl_sf_mathieu_ce(int order, double qq, double zz, gsl_sf_result *result); < int gsl_sf_mathieu_se(int order, double qq, double zz, gsl_sf_result *result); --- > int gsl_sf_mathieu_ce_e(int order, double qq, double zz, gsl_sf_result *result); > double gsl_sf_mathieu_ce(int order, double qq, double zz); > int gsl_sf_mathieu_se_e(int order, double qq, double zz, gsl_sf_result *result); > double gsl_sf_mathieu_se(int order, double qq, double zz); 93c97 < int gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz, --- > int gsl_sf_mathieu_Mc_e(int kind, int order, double qq, double zz, 95c99,100 < int gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz, --- > double gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz); > int gsl_sf_mathieu_Ms_e(int kind, int order, double qq, double zz, 96a102 > double gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz); Left file: C:\Users\brian\AppData\Local\Temp\qbzr\bzr-diff-kryjkr\1\specfunc\mathieu_charv.c Right file: C:\Users\brian\Documents\Visual Studio 2013\Projects\gsl\specfunc\mathieu_charv.c 370c370 < int gsl_sf_mathieu_a(int order, double qq, gsl_sf_result *result) --- > int gsl_sf_mathieu_a_e(int order, double qq, gsl_sf_result *result) 398c398 < return gsl_sf_mathieu_a(order, -qq, result); --- > return gsl_sf_mathieu_a_e(order, -qq, result); 400c400 < return gsl_sf_mathieu_b(order, -qq, result); --- > return gsl_sf_mathieu_b_e(order, -qq, result); 496c496 < int gsl_sf_mathieu_b(int order, double qq, gsl_sf_result *result) --- > int gsl_sf_mathieu_b_e(int order, double qq, gsl_sf_result *result) 530c530 < return gsl_sf_mathieu_b(order, -qq, result); --- > return gsl_sf_mathieu_b_e(order, -qq, result); 532c532 < return gsl_sf_mathieu_a(order, -qq, result); --- > return gsl_sf_mathieu_a_e(order, -qq, result); 875a876,889 > > /*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ > > #include "eval.h" > > GSL_FUN double gsl_sf_mathieu_a(int order, double qq) > { > EVAL_RESULT(gsl_sf_mathieu_a_e(order, qq, &result)); > } > > GSL_FUN double gsl_sf_mathieu_b(int order, double qq) > { > EVAL_RESULT(gsl_sf_mathieu_b_e(order, qq, &result)); > } Left file: C:\Users\brian\AppData\Local\Temp\qbzr\bzr-diff-kryjkr\1\specfunc\mathieu_angfunc.c Right file: C:\Users\brian\Documents\Visual Studio 2013\Projects\gsl\specfunc\mathieu_angfunc.c 30c30 < int gsl_sf_mathieu_ce(int order, double qq, double zz, gsl_sf_result *result) --- > int gsl_sf_mathieu_ce_e(int order, double qq, double zz, gsl_sf_result *result) 66c66 < status = gsl_sf_mathieu_a(order, qq, &aa); --- > status = gsl_sf_mathieu_a_e(order, qq, &aa); 112c112 < int gsl_sf_mathieu_se(int order, double qq, double zz, gsl_sf_result *result) --- > int gsl_sf_mathieu_se_e(int order, double qq, double zz, gsl_sf_result *result) 152c152 < status = gsl_sf_mathieu_b(order, qq, &aa); --- > status = gsl_sf_mathieu_b_e(order, qq, &aa); 350a351,364 > > /*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ > > #include "eval.h" > > GSL_FUN double gsl_sf_mathieu_ce(int order, double qq, double zz) > { > EVAL_RESULT(gsl_sf_mathieu_ce_e(order, qq, zz, &result)); > } > > GSL_FUN double gsl_sf_mathieu_se(int order, double qq, double zz) > { > EVAL_RESULT(gsl_sf_mathieu_se_e(order, qq, zz, &result)); > } Left file: C:\Users\brian\AppData\Local\Temp\qbzr\bzr-diff-kryjkr\1\specfunc\mathieu_radfunc.c Right file: C:\Users\brian\Documents\Visual Studio 2013\Projects\gsl\specfunc\mathieu_radfunc.c 30c30 < int gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz, --- > int gsl_sf_mathieu_Mc_e(int kind, int order, double qq, double zz, 62c62 < status = gsl_sf_mathieu_a(order, qq, &aa); --- > status = gsl_sf_mathieu_a_e(order, qq, &aa); 136c136 < int gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz, --- > int gsl_sf_mathieu_Ms_e(int kind, int order, double qq, double zz, 176c176 < status = gsl_sf_mathieu_b(order, qq, &aa); --- > status = gsl_sf_mathieu_b_e(order, qq, &aa); 474a475,488 > > /*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ > > #include "eval.h" > > GSL_FUN double gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz) > { > EVAL_RESULT(gsl_sf_mathieu_Mc_e(kind, order, qq, zz, &result)); > } > > GSL_FUN double gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz) > { > EVAL_RESULT(gsl_sf_mathieu_Ms_e(kind, order, qq, zz, &result)); > } Left file: C:\Users\brian\AppData\Local\Temp\qbzr\bzr-diff-cav0a0\1\specfunc\test_mathieu.c Right file: C:\Users\brian\Documents\Visual Studio 2013\Projects\gsl\specfunc\test_mathieu.c 37c37 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 0.0, 0.0, &r), 39c39 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 0.0, M_PI_2, &r), 41c41 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 5.0, 0.0, &r), 43c43 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 5.0, M_PI_2, &r), 45c45 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 10.0, 0.0, &r), 47c47 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 10.0, M_PI_2, &r), 49c49 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 15.0, 0.0, &r), 51c51 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 15.0, M_PI_2, &r), 53c53 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 20.0, 0.0, &r), 55c55 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 20.0, M_PI_2, &r), 57c57 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 25.0, 0.0, &r), 59c59 < TEST_SF(s, gsl_sf_mathieu_ce, (0, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (0, 25.0, M_PI_2, &r), 61c61 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 0.0, 0.0, &r), 63c63 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 5.0, 0.0, &r), 65c65 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 10.0, 0.0, &r), 67c67 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 15.0, 0.0, &r), 69c69 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 20.0, 0.0, &r), 71c71 < TEST_SF(s, gsl_sf_mathieu_ce, (1, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (1, 25.0, 0.0, &r), 73c73 < TEST_SF(s, gsl_sf_mathieu_se, (1, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 0.0, M_PI_2, &r), 75c75 < TEST_SF(s, gsl_sf_mathieu_se, (1, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 5.0, M_PI_2, &r), 77c77 < TEST_SF(s, gsl_sf_mathieu_se, (1, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 10.0, M_PI_2, &r), 79c79 < TEST_SF(s, gsl_sf_mathieu_se, (1, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 15.0, M_PI_2, &r), 81c81 < TEST_SF(s, gsl_sf_mathieu_se, (1, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 20.0, M_PI_2, &r), 83c83 < TEST_SF(s, gsl_sf_mathieu_se, (1, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (1, 25.0, M_PI_2, &r), 85c85 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 0.0, 0.0, &r), 87c87 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 0.0, M_PI_2, &r), 89c89 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 5.0, 0.0, &r), 91c91 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 5.0, M_PI_2, &r), 93c93 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 10.0, 0.0, &r), 95c95 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 10.0, M_PI_2, &r), 97c97 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 15.0, 0.0, &r), 99c99 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 15.0, M_PI_2, &r), 101c101 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 20.0, 0.0, &r), 103c103 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 20.0, M_PI_2, &r), 105c105 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 25.0, 0.0, &r), 107c107 < TEST_SF(s, gsl_sf_mathieu_ce, (2, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (2, 25.0, M_PI_2, &r), 109c109 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 0.0, 0.0, &r), 111c111 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 5.0, 0.0, &r), 113c113 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 10.0, 0.0, &r), 115c115 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 15.0, 0.0, &r), 117c117 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 20.0, 0.0, &r), 119c119 < TEST_SF(s, gsl_sf_mathieu_ce, (5, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (5, 25.0, 0.0, &r), 121c121 < TEST_SF(s, gsl_sf_mathieu_se, (5, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 0.0, M_PI_2, &r), 123c123 < TEST_SF(s, gsl_sf_mathieu_se, (5, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 5.0, M_PI_2, &r), 125c125 < TEST_SF(s, gsl_sf_mathieu_se, (5, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 10.0, M_PI_2, &r), 127c127 < TEST_SF(s, gsl_sf_mathieu_se, (5, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 15.0, M_PI_2, &r), 129c129 < TEST_SF(s, gsl_sf_mathieu_se, (5, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 20.0, M_PI_2, &r), 131c131 < TEST_SF(s, gsl_sf_mathieu_se, (5, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (5, 25.0, M_PI_2, &r), 133c133 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 0.0, 0.0, &r), 135c135 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 0.0, M_PI_2, &r), 137c137 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 5.0, 0.0, &r), 139c139 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 5.0, M_PI_2, &r), 141c141 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 10.0, 0.0, &r), 143c143 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 10.0, M_PI_2, &r), 145c145 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 15.0, 0.0, &r), 147c147 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 15.0, M_PI_2, &r), 149c149 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 20.0, 0.0, &r), 151c151 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 20.0, M_PI_2, &r), 153c153 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 25.0, 0.0, &r), 155c155 < TEST_SF(s, gsl_sf_mathieu_ce, (10, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (10, 25.0, M_PI_2, &r), 157c157 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 0.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 0.0, 0.0, &r), 159c159 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 5.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 5.0, 0.0, &r), 161c161 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 10.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 10.0, 0.0, &r), 163c163 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 15.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 15.0, 0.0, &r), 165c165 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 20.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 20.0, 0.0, &r), 167c167 < TEST_SF(s, gsl_sf_mathieu_ce, (15, 25.0, 0.0, &r), --- > TEST_SF(s, gsl_sf_mathieu_ce_e, (15, 25.0, 0.0, &r), 169c169 < TEST_SF(s, gsl_sf_mathieu_se, (15, 0.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 0.0, M_PI_2, &r), 171c171 < TEST_SF(s, gsl_sf_mathieu_se, (15, 5.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 5.0, M_PI_2, &r), 173c173 < TEST_SF(s, gsl_sf_mathieu_se, (15, 10.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 10.0, M_PI_2, &r), 175c175 < TEST_SF(s, gsl_sf_mathieu_se, (15, 15.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 15.0, M_PI_2, &r), 177c177 < TEST_SF(s, gsl_sf_mathieu_se, (15, 20.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 20.0, M_PI_2, &r), 179c179 < TEST_SF(s, gsl_sf_mathieu_se, (15, 25.0, M_PI_2, &r), --- > TEST_SF(s, gsl_sf_mathieu_se_e, (15, 25.0, M_PI_2, &r), --------------080105060003050107050704--