Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie arbeitet man mit vector-Variablen?
Hi.
Ich bin hier schon am verzweifeln... Ich hoffe das mir hier jemand helfen kann.
Wie arbeitet man mit vector-Variablen? Ich habe z.B. folgenden Code:
#include <iostream>
using namespace std;
int main(void)
{
vector float a,b,c;
a=(vector float)(50.05124);
b=(vector float)(150.14505124);
c = vec_add(a,b);
cout << "Hallo" << endl;
return EXIT_SUCCESS;
}
Dieses "Hallo" ist nur da, damit man erkennt, das es keine Laufzeit-Fehler gibt. Mein Problem ist jetzt nämlich das ich a, b und c nirgens verwenden kann. Weder in cout noch in anderen STL-Befehlen. Diese kennen den Typ "vector float" nicht.
Weiß einer was man machen muss, damit man diese verwenden kann? Oder muss man die generell anders verwenden?
Verwende OS X 10.3.2 mit "gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 1495)" über das Terminal.
In Hoffnung. Danke.
Ich hab' ehrlich keine Ahnung was das werden soll,ist mit vector der std:vector gemeint?
#include <vector>
#include <iostream>
int main()
{
std::vector<float> vec;
vec.push_back(1234);
std::cout << vec[0] << std::endl;
}
std::vector ist aber kein mathematischer Vector,also ein vector + vector gibt es nicht,dazu mußt du std::valarray benutzen.
Nein. Ich meine nicht den:
std:vector<float> a;
sondern:
vector float a;
Das sind solche 128bit Variablen. Mein Code funktioniert ja auch. Nur leider kann ich mit den Variablen nix machen, da kein STL-Befehl den Type "vector float" kennt.
Mal als Beispiel ohne "using namespace std;":
#include <iostream>
int main(void)
{
vector float a,b,c;
a=(vector float)(50.05124);
b=(vector float)(150.14505124);
c = vec_add(a,b);
std::cout << "Hallo" << std::endl;
return EXIT_SUCCESS;
}
Original geschrieben von Nuke
sondern:
vector float a;
Ja,und was soll das sein?
Mein Code funktioniert ja auch.
Mag sein,aber nicht auf einem C++ Compiler.
Nur leider kann ich mit den Variablen nix machen, da kein STL-Befehl den Type "vector float" kennt.
Ich auch nicht.
Mal als Beispiel ohne "using namespace std;":
Aha,und?Ich verstehe es immer noch nicht.
Vielleicht sagst du mal wo du diese Idee mit vector float her hast,und weiterhin das mit dem vec_add,wo kommt das her?
Was ich mir vorstellen könnte,wäre ein Compiler der ein neues Keyword vector eingeführt hat (ebend so was wie const,volatile...).Das könntest du vor float schreiben (der gcc ist für seine Extensions ja auch berüchtigt).
Jedenfalls ist der Code so kein korrektes C++.
Oder ist das vielleicht Objective C? (weil du auf MacOs programmierst).
Ja,tatsächlich es ist Mac-Krams
http://developer.apple.com/hardware/ve/model_details.html
Funzt aber auch unter Linux:
http://gcc.gnu.org/onlinedocs/gcc/PowerPC-AltiVec-Built-in-Functions.html
peschmae
03-03-2004, 19:03
Sieht mir aber grausam plattformabhängig aus. :(
MfG Peschmä
Original geschrieben von peschmae
Sieht mir aber grausam plattformabhängig aus. :(
MfG Peschmä
Naja. Nenne mir einen anderen Desktop-Prozessor mit echter 128bit-Einheit. ;) Außerdem soll´s ja nur auf´m PowerPC laufen.
Also, kann ich annehmen das sich hier keiner damit auskennt? Naja. Noch einen Moment warten. Vielleicht kommt ja noch jemand. Hoffnung stirbt zuletzt. :D
peschmae
03-03-2004, 19:42
Naja, der crusoe läuft ja mittlerweile intern mit 256bit breite - ob man das allerdings direkt nutzen kann wage ich zu bezweifeln ;)
Abba. Wozu ist das überhaupt genau gut? (Jaja, ich weiss Photoshop läuft damit schneller und so, aber irgendwie finde ich den SSE/Altivec-Wettbewerb schon fast kindisch - und alle sind inkomaptibel)
MfG Peschmä
Hi.
Ich meine nicht die Bus-Breite. Sondern Register. Der G4 hat ja 32 128bit-Register (nennt man halt Altivec). Und das ist nicht so ein 2x64bit Kram wie bei SSE.
Wozu das gut ist? Geschwindigkeit! Und ich kenne keinen SSE/Altivec-Wettbewerb. Eigentlich ist allgemein bekannt, das Altivec das bessere Konzept hat. Und für das was ich vor habe, wäre es praktisch, wenn´s mal schneller geht. Apple hat auch ein nettes Beispiel mit dem Bildschirmschoner "Flurry" mit beigelegt. Nur leider sehe ich bei dem Quellcode nicht durch.
Wie gesagt. Kompatibilität geht mir erst mal sonstwo vorbei. Ich würde gerne die Altivec-Einheit nutzen. Ist ja nunmal nicht verboten.
peschmae
03-03-2004, 21:24
Original geschrieben von Nuke
Ist ja nunmal nicht verboten.
Doch ;)
MfG Peschmä
Hmm. Kennt einer vielleicht eine Seite, wo man mir weiterhelfen könnte?
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.