1#!/bin/sh 2# 3# NOTE: all tests duplicated in q_test.bat 4if ! which qconvex >/dev/null 2>&1; then 5 if [ ! -d bin ]; then 6 echo 'eg/q_test: Run eg/q_test from the Qhull directory with bin/qconvex, or add qconvex/etc. to $PATH' 7 exit 1 8 fi 9 if [ ! -e bin/qconvex -a ! -e bin/qconvex.exe ]; then 10 echo 'eg/q_test: Build qhull first. qconvex is missing from bin/ directory and $PATH' 11 exit 1 12 fi 13 echo 'eg/q_test: Temporarily add "$PWD/bin" to $PATH for access to qconvex,etc.' 14 PATH=$PWD/bin:$PATH 15 if ! which qconvex >/dev/null 2>&1; then 16 echo 'eg/q_test: PATH=... failed. Please execute "export PATH=$PWD/bin:$PATH" and repeat' 17 exit 1 18 fi 19fi 20if ! user_eg >/dev/null; then 21 echo eg/q_test: user_eg failed to run. It uses the shared qhull library 22 echo 'On Linux, export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH' 23 echo 'On Windows with mingw, cp -p lib/libqhull_r.dll bin/' 24fi 25echo ============================== 26echo ========= eg/q_test ========== 27echo == Check qhull programs ====== 28echo ============================== 29echo 30echo "qhull => $(qhull -V)" 31echo "qconvex => $(qconvex -V)" 32echo "qvoronoi => $(qconvex -V)" 33echo "qdelaunay => $(qdelaunay -V)" 34echo "qhalf => $(qhalf -V)" 35echo 36echo ============================== 37echo == check user_eg, user_eg2, and user_eg3 38echo == errors if 'user_eg' and 'user_eg2' not found 39echo ============================== 40set -v # echo commands to stdout 41user_eg 'QR1 p n Qt' 'v p' 'Fp' 42user_eg2 'QR1 p' 'v p' 'Fp' 43user_eg3 rbox '10 D2' 's r 5 D2' qhull 's p' 44echo === check front ends and examples ${d:-`date`} ================== 45qconvex - 46qconvex . 47qconvex -? # [mar'19] isatty does not work for Git for Windows 48rbox c D3 | qconvex s n Qt 49rbox c D2 | qconvex s i 50rbox c D2 | qconvex s n 51rbox c D2 | qconvex o 52rbox 1000 s | qconvex s Tv FA 53rbox c d D2 | qconvex s Qc Fx 54rbox y 1000 W0 | qconvex Qc s n 55rbox y 1000 W0 | qconvex s QJ 56rbox d G1 D12 | qconvex QR0 FA 57rbox c D6 | qconvex s FA TF500 58rbox c D7 | qconvex s FA TF1000 59rbox d G1 D12 | qconvex QR0 FA Pp 60rbox c P0 d D2 | qconvex p Fa Fc FP FI Fn FN FS Fv Fx 61rbox c d D2 | qconvex s i QV0 62rbox c | qconvex Q0 63qvoronoi - 64qvoronoi . 65qvoronoi -? # [mar'19] isatty does not work for Git for Windows 66rbox c P0 D2 | qvoronoi s o 67rbox c P0 D2 | qvoronoi Fi Tv 68rbox c P0 D2 | qvoronoi Fo Tv 69rbox c P0 D2 | qvoronoi Fv 70rbox c P0 D2 | qvoronoi s Qu Fv 71rbox c P0 D2 | qvoronoi s Qu Qt Fv 72rbox c P0 D2 | qvoronoi Qu Fo 73rbox c G1 d D2 | qvoronoi s p 74rbox c G1 d D2 | qvoronoi QJ p 75rbox c P-0.1 P+0.1 P+0.1 D2 | qvoronoi s Fc FP FQ Fn FN 76rbox P0 c D2 | qvoronoi s Fv QV0 77qdelaunay - 78qdelaunay . 79qdelaunay -? # [mar'19] isatty does not work for Git for Windows 80rbox c P0 D2 | qdelaunay s o 81rbox c P0 D2 | qdelaunay i 82rbox c P0 D2 | qdelaunay Fv 83rbox c P0 D2 | qdelaunay s Qu Qt Fv 84rbox c G1 d D2 | qdelaunay s i 85rbox c G1 d D2 | qhull d Qbb Ft 86rbox c G1 d D2 | qhull d Qbb QJ s Ft 87rbox M3,4 z 100 D2 | qdelaunay s 88rbox c P-0.1 P+0.1 P+0.1 D2 | qdelaunay s Fx Fa Fc FP FQ Fn FN 89rbox P0 P0 c D2 | qdelaunay s FP QV0 90qhalf - 91qhalf . 92qhalf -? # [mar'19] isatty does not work for Git for Windows 93rbox d | qhull FQ n | qhalf s Qt H0,0,0 Fp 94rbox c | qhull FQ FV n | qhalf s i 95rbox c | qhull FQ FV n | qhalf o 96rbox d D2 | qhull FQ n | qhalf s H0 Fc FP Fn FN FQ Fv Fx 97# qhull - printed at end 98qhull . 99qhull -? # [mar'19] isatty does not work for Git for Windows 100rbox 1000 s | qhull Tv s FA 101rbox 10 D2 | qhull d QJ s i TO q_test.log.1 102cat q_test.log.1 103rbox 10 D2 | qhull v Qbb Qt p 104rbox 10 D2 | qhull d Qu QJ m 105rbox 10 D2 | qhull v Qu QJ o 106rbox c d D2 | qhull Qc s f Fx 107rbox c | qhull FV n | qhull H Fp 108rbox d D12 | qhull QR0 FA 109rbox c D7 | qhull FA TF1000 110rbox y 1000 W0 | qhull Qc 111rbox c | qhull n 112rbox c | qhull TA1 113rbox 10 s | qhull C1e-5 T1P-1f 114 115echo === check quality of Qhull for ${d:-`hostname`} ${d:-`date`} 116rbox 1000 W0 | qhull QR2 QJ s Fs Tv 117rbox 1000 W0 | qhull QR2 s Fs Tv 118rbox 1000 s | qhull C0.02 Qc Tv 119rbox 500 s D4 | qhull C0.01 Qc Tv 120rbox 1000 s | qhull C-0.02 Qc Tv 121rbox 1000 s D4 | qhull C-0.01 Qc Tv 122rbox 200 s D5 | qhull C-0.01 Qx Qc Tv 123rbox 100 s D6 | qhull C-0.001 Qx Qc Tv 124rbox 1000 W1e-4 | qhull C-1e-6 Qc Tv 125rbox 1000 W5e-4 D4 | qhull C-1e-5 Qc Tv 126rbox 400 W1e-3 D5 | qhull C-1e-5 Qx Qc Tv 127echo === check input format etc. ${d:-`date`} 128qhull <<EOF 1292 4 input comment 1301 0 1 1 1 2 0 0 131EOF 132qhull <<EOF 1332 4 input comment 1341 0 1 1 1 2 0 0 0 135EOF 136qhull Qa <<EOF 1372 4 input comment 1381 0 1 1 1 2 0 0 0 139EOF 140qhull <<EOF 1412 4 input comment 1421 0 1 1 1 2 0 143EOF 144qhull Qa <<EOF 1452 4 input comment 1461 0 1 1 1 2 0 147EOF 148qhull <<EOF 1492 1504 input comment 1511 #another comment 1520 1 1 1 2 0 153EOF 154qhull <<EOF 1552 4 1 0 1 1 1 2 0 0 156EOF 157qhull d Qz <<EOF 1582 5 1 0 1 1 0 1 0 0 0 159EOF 160qhull d Q8 Qz <<EOF 1612 5 1 0 1 1 0 1 0 0 0 162EOF 163rbox d h | qhull Fd FV n FD Tcv | qhull Fd H Fp Tcv 164rbox 10 h | qhull Fd FD p Tcv | qhull Fd d Tcv 165 166echo === check rbox ${d:-`date`} 167rbox 3 n D2 168rbox 3 D2 169rbox 3 h D2 170rbox 3 z D2 171rbox 3 z h D2 172rbox 3 B10 D2 173rbox 3 B10 D2 C2,1E-13,1 174rbox 3 z B10 D2 175rbox 4 L2 r D2 176rbox 8 L2 r D2 177rbox 8 L2 D2 C1,1E-13,2 178rbox 4 L4 r D3 179rbox 4 L4 s D5 W1e-3 180rbox 4 L4 s D5 W1e-3 C1,1E-12 181rbox y 182rbox 10 M3,4 183rbox 10 M3,4 C1,1E-14 184rbox 27 M1,0,1 185rbox 10 L4 r D3 | qhull Tcv 186rbox 10 L4 s D5 W1e-3 | qhull Tcv 187rbox 10 L4 s D5 W1e-3 C1,1E-12 | qhull Tcv 188rbox 10 L6 D3 | qhull Tcv 189rbox 10 L1.1 s D4 | qhull Tcv 190rbox y r 100 W0 O0.5 | qhull s p Tcv 191rbox x r 100 W0 O0.5 | qhull s Tcv 192rbox 12 D8 | qhull Tcv 193rbox 12 D9 | qhull Tcv 194rbox 1000 D4 | qhull s i A-0.97 C0.2 A0.7 Tcv 195rbox 3 D2 | qhull Qb0B1:-2 p 196rbox 100 r D2 | qhull Pd0:0.7 PD0:0.8 Pg n Tcv 197rbox 1000 s | qhull C0.05 Tcv 198rbox 1000 s t | qhull Qm C0.05 Tcv 199rbox 500 D2 | qhull n A-0.95 C0.1 Tcv 200rbox 500 s P1,1,1 | qhull QgG0 Pp Tcv 201rbox d | qhull m 202rbox d | qhull FM 203rbox c D2 | qhull Tcv Q0 204rbox d D2 | qhull Tcv 205rbox c D3 | qhull Tcv Q0 206rbox d D3 | qhull Tcv 207rbox c D4 | qhull Tcv Q0 208rbox d D4 | qhull Tcv 209rbox c D5 | qhull Tcv Q0 210rbox d D5 | qhull Tcv 211rbox c D6 | qhull Tcv Q0 212rbox d D6 | qhull Tcv 213rbox d D7 | qhull Tcv 214rbox c D2 | qhull Tcv C-0 215rbox c D3 | qhull Tcv C-0 216rbox c D4 | qhull Tcv C-0 217rbox c D5 | qhull Tcv C-0 218rbox c D6 | qhull Tcv C-0 219rbox c D7 | qhull Tv C-0 220rbox 20 l D3 | qhull Tcv 221rbox 100 s D2 | qhull Tcv 222rbox 100 s D3 | qhull Tcv 223rbox 100 s D4 | qhull Tcv 224rbox 100 s c D4 | qhull Tcv 225rbox 100 s d G1.5 D4 | qhull Tcv 226rbox 100 s W1e-2 | qhull Tcv 227rbox 100 | qhull Tcv 228rbox 100 W1e-3 | qhull Tcv 229rbox 100 r D2 | qhull Tcv 230rbox 100 r s Z1 | qhull Tcv 231rbox 100 r s Z1 G0.1 | qhull Tcv C-0 232rbox 100 s Z1 G0.1 | qhull Tcv 233rbox 100 s Z1e-5 G0.1 | qhull Tc Pp 234 235echo === check qhull option errors ${d:-`date`} 236 237rbox 10 | qhull d H0 238rbox 10 | qhull Zza 239rbox 10 | qhull Zza Qw 240rbox 10 | qhull Q999 241rbox 10 | qhull Q999 Qw 242qhull TIxyzlkajdfhwh 243rbox 10 >r.x 244qhull TIr.x 245qhull p TI r.x TO x.x 246cat x.x 247 248echo === check qhull output formats ${d:-`date`} 249rbox 5 r s D2 | qhull Tcv 250rbox 5 r s D2 | qhull s 251rbox 5 r s D2 | qhull s o 252rbox 5 r s D2 | qhull f 253rbox 5 r s D2 | qhull i 254rbox 5 r s D2 | qhull m 255rbox 5 r s D2 | qhull FM 256rbox 5 r s D2 | qhull n 257rbox 5 r s D2 | qhull p 258rbox 5 r s D2 | qhull o 259rbox 5 r s D2 | qhull Ft 260rbox 5 r s D2 | qhull Fx 261rbox 5 r s D2 | qhull p n i p p 262rbox 10 D3 | qhull f Tcv 263rbox 10 D3 | qhull i 264rbox 10 D3 | qhull p 265rbox 10 D3 | qhull o 266rbox 10 D3 | qhull Fx 267rbox 27 M1,0,1 | qhull Qc 268rbox 50 D3 s | qhull C0.1 Qc Pd0d1d2 Pg s p Tcv 269rbox 10 D2 P0 P1e-15 | qhull d Qc FP s Tcv 270rbox 100 s | qhull C-0.003 Qc FP s 271rbox 100 s D2 | qhull C0.1 i Fx Tcv 272rbox 4 s D3 | qhull Qc Ghipv Tcv 273rbox 6 D4 | qhull f Tcv 274rbox 6 D4 | qhull i 275rbox 6 D4 | qhull p 276rbox 6 D4 | qhull o 277rbox 1000 s D2 | qhull FA Tcv 278rbox 1000 s | qhull FA Tcv 279rbox c D4 | qhull FA Tcv 280rbox c D5 | qhull FA Tcv 281rbox c D5 | qhull FA Qt Tcv 282rbox 10 D2 | qhull d FA Tcv 283rbox 10 D2 | qhull d Qu FA Tcv 284rbox 10 D2 | qhull FA Tcv 285rbox 10 c D2 | qhull Fx Tcv 286rbox 1000 s | qhull FS Tcv 287rbox 10 W0 D2 | qhull p Qc FcC Tcv 288rbox 4 z h s D2 | qhull Fd s n FD Tcv 289rbox 6 s D3 | qhull C-0.1 Qc FF s FQ Fi n Fo FQ FI Fm Fn FN FO FO FQ Fs FS FV Fv Tcv 290rbox P0.5,0.5 P0.5,0.5 W0 5 D2 | qhull d FN Qc 291rbox 10 D3 | qhull Fa PA5 292rbox 10 D3 | qhull Fa PF0.4 293 294echo === test Qt ${d:-`date`} 295rbox c | qhull Qt s o Tcv 296rbox c | qhull Qt f i 297rbox c | qhull Qt m FM n 298rbox c | qhull Qt p o 299rbox c | qhull Qt Fx 300rbox c | qhull Qt FA s Fa 301rbox 6 r s c G0.1 D2 | qhull Qt d FA Tcv 302rbox 6 r s c G0.1 D2 | qhull d FA Tcv 303rbox 6 r s c G0.1 D2 | qhull Qt v p Tcv 304rbox c | qhull Qt C-0.1 Qc FF s FQ Fi n Fo FQ FI Fm Fn FN FO FO FQ Fs FS FV Fv Tcv 305rbox 6 r s c G0.1 D2 P0.1,0.1 | qhull s FP d FO Qt 306rbox 100 W0 | qhull Tv Q11 FO 307 308echo === test unbounded intersection ${d:-`date`} 309rbox c | qhull PD0:0.5 n | qhull H0 Fp Tcv 310rbox 1000 W1e-3 D3 | qhull PA8 Fa FS s n Tcv 311rbox 1000 W1e-3 D3 | qhull C-0.01 PM10 Fm n Tcv Qc 312rbox 1000 W1e-3 D3 | qhull C-0.01 PA8 PG n Tcv Qc 313rbox 10 | qhull FO Tz TO q_test.log.1 314cat q_test.log.1 315 316echo === check Delaunay/Voronoi ${d:-`date`} 317rbox 10 D2 | qhull d Tcv 318rbox 10 D2 | qhull d Qz Tcv 319rbox 10 D3 | qhull d Tcv 320rbox c | qhull d Qz Ft Tcv 321rbox 10 s D2 c | qhull d Tcv 322rbox 10 s D2 | qhull d Tcv Qz Q8 323rbox 10 D2 | qhull d Tcv p 324rbox 10 D2 | qhull d Tcv i 325rbox 10 D2 | qhull d Tcv o 326rbox 10 D2 | qhull v Tcv o 327rbox 10 D2 | qhull v Tcv p 328rbox 10 D2 | qhull v Tcv G 329rbox 10 D2 | qhull v Tcv Fv 330rbox 10 D2 | qhull v Tcv Fi 331rbox 10 D2 | qhull v Tcv Fo 332rbox 10 D2 | qhull v Qu o Fv Fi Fo Tcv 333rbox 10 D3 | qhull v Fv Tcv 334rbox 10 D3 | qhull v Fi Tcv 335rbox 10 D3 | qhull v Fo Tcv 336rbox 10 D3 | qhull v Qu o Fv Fi Fo Tcv 337rbox 5 D2 | qhull v f FnN o 338 339echo === check Halfspace and Qhull identity pipeline, showing the input ${d:-`date`} 340echo === the Qhull pipeline recreates 100 4-D cospherical points with the same area and volume 341rbox 100 s D4 | qhull FA FV s n | head 342rbox 100 s D4 | qhull FQ FA FV n s | qhull s H Fp | head 343rbox 100 s D4 | qhull FQ FA FV n s Tcv | qhull FQ s H Fp Tcv | qhull FA Tcv 344echo === the Qhull pipeline recreates a 3-D tetrahedron 345rbox d D3 | qhull n FD 346rbox d D3 | qhull s n FD Tcv | qhull s Fd H0.1,0.1 Fp Tcv 347echo === the Qhull pipeline recreates a regular 2-D pentagon 348rbox 5 r D2 | qhull FQ n 349rbox 5 r D2 | qhull s FQ n Tcv | qhull s H0 Fp Tcv 350 351echo === check qhull ${d:-`date`} 352rbox 10 s D3 | qhull Tcv 353rbox 10 s D3 | qhull f Pd0:0.5 Pd2 Pg Tcv 354rbox 10 s D3 | qhull f Tcv PD2:-0.5 Pg 355rbox 10 s D3 | qhull QR-1 356rbox 10 s D3 | qhull QR-40 357rbox 1000 D3 | qhull Tcvs 358# Test tracing 'Tn', combine stderr/stdout 'Tz', flush fprintf 'Tf' 359rbox 100 D3 | qhull T1 Tz Tf TA1 TO q_test.log.1 360tail -n -10 q_test.log.1 361rm q_test.log.1 362rbox 100 s D3 | qhull TcvA10 363rbox 100 s D3 | qhull TcvV-2 364rbox 100 s D3 | qhull TcvC2 365rbox 100 s D3 | qhull TcvV2 366rbox 100 s D3 | qhull T1cvV2P2 367rbox 100 s D3 | qhull TcvF100 368rbox 100 s D3 | qhull Qf Tcv 369rbox 100 D3 | qhull Tcv 370rbox 100 D3 | qhull Qs Tcv 371rbox 100 D5 | qhull Qs Tcv 372rbox 100 D3 | qhull Qr Tcv 373rbox 100 D3 | qhull Qxv Tcv 374rbox 100 D3 | qhull Qi f Pd0 Pd1 Pd2 Pg Tcv 375rbox c d | qhull Qc f Tcv 376rbox c d | qhull Qc p Tcv 377rbox 100 D3 | qhull QbB FO Tcv 378rbox 1000 D2 B1e6 | qhull d Qbb FO Tcv 379rbox 10 D3 | qhull QbB p Tcv 380rbox 10 D3 | qhull Qbb p Tcv 381rbox 10 D3 | qhull Qb0:-10B2:20 p Tcv 382rbox 10 D3 | qhull Qb0:-10B2:20 p Tcv | qhull QbB p Tcv 383rbox 10 D3 | qhull Qb1:0B1:0 d Tcv Q8 384rbox 10 D3 | qhull Qb1:0B1:0B2:0 d Tcv Q8 385rbox 10 D3 | qhull Qb1:0 d Tcv 386rbox 10 D3 | qhull Qb1:0B1:0 Tcv 387echo "== next command will error ${d:-`date`} ==" 388rbox 10 D2 | qhull Qb1:1B1:1 Tcv 389rbox 200 L20 D2 t | qhull FO Tcv C-0 390rbox 1000 L20 t | qhull FO Tcv C-0 391rbox 200 L20 D4 t | qhull FO Tcv C-0 392rbox 200 L20 D5 t | qhull FO Tcv Qx 393rbox 1000 W1e-3 s D2 t | qhull d FO Tcv Qu Q0 394rbox 1000 W1e-3 s D2 t | qhull d FO Tcv Qu C-0 395 396echo === check joggle and TRn ${d:-`date`} 397rbox 100 W0 | qhull QJ1e-14 Qc TR100 Tv 398rbox 100 W0 | qhull QJ1e-13 Qc TR100 Tv 399rbox 100 W0 | qhull QJ1e-12 Qc TR100 Tv 400rbox 100 W0 | qhull QJ1e-11 Qc TR100 Tv 401rbox 100 W0 | qhull QJ1e-10 Qc TR100 Tv 402rbox 100 | qhull d QJ Qb0:1e4 QB0:1e5 Qb1:1e4 QB1:1e6 Qb2:1e5 QB2:1e7 FO Tv 403 404echo === check precision options ${d:-`date`} 405rbox 100 D3 s | qhull E0.01 Qx Tcv FO 406rbox 100 D3 W1e-1 | qhull W1e-3 Tcv 407rbox 100 D3 W1e-1 | qhull W1e-2 Tcv Q0 408rbox 100 D3 W1e-1 | qhull W1e-2 Tcv 409rbox 100 D3 W1e-1 | qhull W1e-1 Tcv 410rbox 15 D2 P0 P1e-14,1e-14 | qhull d Quc Tcv 411rbox 15 D3 P0 P1e-12,1e-14,1e-14 | qhull d Qcu Tcv 412rbox 1000 s D3 | qhull C-0.01 Tcv Qc 413rbox 1000 s D3 | qhull C-0.01 V0 Qc Tcv 414rbox 1000 s D3 | qhull C-0.01 U0 Qc Tcv 415rbox 1000 s D3 | qhull C-0.01 V0 Qcm Tcv 416rbox 1000 s D3 | qhull C-0.01 Qcm Tcv 417rbox 1000 s D3 | qhull C-0.01 Q1 FO Tcv Qc 418rbox 1000 s D3 | qhull C-0.01 Q2 FO Tcv Qc 419rbox 1000 s D3 | qhull C-0.01 Q3 FO Tcv Qc 420rbox 1000 s D3 | qhull C-0.01 Q4 FO Tcv Qc 421echo === this may generate an error ${d:-`date`} 422rbox 1000 s D3 | qhull C-0.01 Q5 FO Tcv 423echo === this should generate an error ${d:-`date`} 424rbox 1000 s D3 | qhull C-0.01 Q6 FO Po Tcv Qc 425rbox 1000 s D3 | qhull C-0.01 Q7 FO Tcv Qc 426rbox 1000 s D3 | qhull C-0.01 Qx Tcv Qc 427echo === this may generate an error e.g., t1263080158 ${d:-`date`} 428rbox 100 s D3 t | qhull R1e-3 Tcv Qc 429rbox 100 s D3 t | qhull R1e-2 Tcv Qc 430rbox 500 s D3 t | qhull R0.05 A-1 Tcv Qc 431rbox 100 W0 D3 t | qhull R1e-3 Tcv Qc 432rbox 100 W0 D3 t | qhull R1e-3 Qx Tcv Qc 433rbox 100 W0 D3 t | qhull R1e-2 Tcv Qc 434rbox 100 W0 D3 t | qhull R1e-2 Qx Tcv Qc 435rbox 500 W0 D3 t | qhull R0.05 A-1 Tcv Qc 436rbox 500 W0 D3 t | qhull R0.05 Qx Tcv Qc 437rbox 1000 W1e-20 t | qhull Tcv Qc 438rbox 1000 W1e-20 D4 t | qhull Tcv Qc 439rbox 500 W1e-20 D5 t | qhull Tv Qc 440rbox 100 W1e-20 D6 t | qhull Tv Qc 441rbox 50 W1e-20 D6 t | qhull Qv Tv Qc 442rbox 10000 D4 t | qhull QR0 Qc C-0.01 A0.3 Tv 443rbox 1000 D2 t | qhull d QR0 Qc C-1e-8 Qu Tv 444rbox 300 D5 t |qhull A-0.999 Qx Qc Tcv 445rbox 100 D6 t |qhull A-0.9999 Qx Qc Tcv 446rbox 50 D7 t |qhull A-0.99999 Qx Qc Tcv W0.1 447 448echo ======================================================= 449echo === The following commands may cause errors ${d:-`date`} 450echo ======================================================= 451 452echo === check bad cases for Qhull ${d:-`date`} 453rbox 1000 L100000 s G1e-6 t | qhull Tv 454rbox 1000 L100000 s G1e-6 t | qhull Tv Q10 455rbox 1000 s Z1 G1e-13 t | qhull Tv 456rbox 1000 s W1e-13 P0 t | qhull d Qbb Qc Q12 Tv 457rbox 1000 s W1e-13 t | qhull d Q12 Tv 458rbox 1000 s W1e-13 t D2 | qhull d Tv 459 460echo === check Qhull without merging Q0 ${d:-`date`} 461rbox c D7 | qhull Q0 Tcv 462rbox 100 s D3 | qhull Q0 E1e-3 Tc Po 463rbox 100 s D3 | qhull Q0 E1e-2 Tc Po 464rbox 100 s D3 | qhull Q0 E1e-1 Tc Po 465rbox 100 s D3 | qhull Q0 R1e-3 Tc Po 466rbox 100 s D3 | qhull Q0 R1e-2 Tc Po 467rbox 100 s D3 | qhull Q0 R0.05 Tc 468rbox 100 s D3 | qhull Q0 R0.05 Tc Po 469rbox 1000 W1e-7 | qhull Q0 Tc Po 470rbox 50 s | qhull Q0 V0.05 W0.01 Tc Po 471rbox 100 s D5 | qhull Q0 R1e-2 Tc Po 472 473echo === check nearly incident points ${d:-`date`} 474rbox L100 2000 D4 s C1,1e-13 t2 | qhull 475rbox L100 2000 D4 s C1,1e-13 t2 | qhull Q12 476rbox 50 C1,1E-13 t1447644703 | qhull d 477rbox 50 C1,1E-13 t1447644703 | qhull d Q12 478rbox 50 C1,1E-13 t1447644703 | qhull d Q14 479 480qhull - 481rbox 482cat html/qhull.txt html/rbox.txt 483 484# end of q_test 485