From -7832373837026732867
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f78e5,94e9c2bbb0060b48
X-Google-Attributes: gidf78e5,public
X-Google-ArrivalTime: 2002-09-02 01:15:02 PST
Return-Path: <devnull@stump.algebra.com>
X-Authentication-Warning: mulga.cs.mu.OZ.AU: fjh set sender to devnull@stump.algebra.com using -f
Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!comp-std-cpp-robomod!not-for-mail
X-Robomod: STUMP, ichudov@algebra.com (Igor Chudov)
Delivered-To: std-c++@ncar.ucar.edu
From: "Noah Stein" <noah@a-c-m.org>
Newsgroups: comp.std.c++
References: <87d6rxwoti.fsf@grue.ucsd.edu>
Subject: Re: Proposals for small vectors?
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID: <h7zc9.314$4R.44379276@newssvr13.news.prodigy.com>
X-Complaints-To: abuse@prodigy.net
X-Trace: newssvr13.news.prodigy.com 1030929997 ST000 67.114.229.251 (Sun, 01 Sep 2002 21:26:37 EDT)
NNTP-Posting-Date: Sun, 01 Sep 2002 21:26:37 EDT
Organization: Prodigy Internet http://www.prodigy.com
X-UserInfo1: FKPO@MC@@S@YBQDXGBCBNWX@RJ_XPDLMN@GZ_GYO^BVNDQUBLNTC@AWZWDXZXQ[K\FFSKCVM@F_N_DOBWVWG__LG@VVOIPLIGX\\BU_B@\P\PFX\B[APHTWAHDCKJF^NHD[YJAZMCY_CWG[SX\Y]^KC\HSZRWSWKGAY_PC[BQ[BXAS\F\\@DMTLFZFUE@\VL
Approved: Fergus Henderson <fjh@cs.mu.oz.au>, moderator of comp.std.c++
Date: Mon,  2 Sep 2002 03:12:51 CST
Lines: 46
Xref: archiver1.google.com comp.std.c++:13545

"Walter Landry" <wlandry@ucsd.edu> wrote in message
news:87d6rxwoti.fsf@grue.ucsd.edu...

> You've gotten Blitz to work under VC6, or you've gotten some kind of
> expression templates to work?  I suspect it is the latter.  In any
> case, you da man.  However, making a *general purpose*, high
> performance matrix library without partial specialization sounds
> painful, if not outright impossible.

Noooo.... I haven't even considered trying to port Blitz to VC6.  I've
written a working expression template engine for vectors and matrices.  You
need to plan around the fact that there's no PTS or you're going to have a
nightmare.  Non-PTS implementations have many more support classes to
function properly.  Most constructs can be implmented without PTS.  Some
port very poorly, but they are just not extensible.  Supporting new classes
requires modifying the library code because some workarounds for PTS require
compile-time switch statements.  A new class to consider is a new case for
the switch deep in the bowels of the machinery.

I'd say it's quite possible to have an efficient library without PTS.  I've
examined the assembly output of the fully optimized version under VC6.  The
compiler can make some very tight code.  I assume that GCC should also put
out some fast code, too.

What do you think PTS is necessary for?  I'm wondering if maybe I'm just
looking at the needs I've always had and that I might be overlooking
everybody else's needs.  The only part of the code base that really suffers
so far as I've seen is type promotion.  PTS might be necessary to
effectively deal with specializations for supporting math hardware such as
MMX and SSE on Pentiums or Altivec on the MIPS architecture.  I'm not
convinced that this last statement is true, though.

This is all probably for naught anyhow since by the time any sort of small
vector would become standardized, non-PTS compilers will be few and far
between.  Hopefully that's more than a dream.  :)


-- Noah


---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]



