I have two double vectors (x, y) and i need to compare the X vector element with a doubleSpin value and if they are equal I need do get the Y value at the same position.

I tried this, but it doesn't work properly:

```
QVector<double> x(512), y(512);
double rate = prom->doubleSpinBox->value();
double chk_rate = 0;
for (int i=0; i<x.size(); ++i)
{
x[i] = i * 0.1;
y[i] = 10 * qAbs(qSin(2.0 * M_PI * i ));
if (rate == x[i]) chk_rate = y[i];
}
```

There is a warning : comparing floating point with == or != is unsafe!

And besides this in sometimes the result is correct but most of times it shows y[i] = 0;

I was trying to use this way, but i don't know how to finish:

```
QVector<double> x(512), y(512);
double rate = prom->doubleSpinBox->value();
double chk_rate = 0;
auto it = std::find(x.begin(), x.end(), rate);
auto index = std::distance(x.begin(), it);
chk_rate = y[index];
```

There is other warning: implicit conversion loses integer precision: 'long' to 'int'

Could someone help me please?

Cheers

]]>I have two double vectors (x, y) and i need to compare the X vector element with a doubleSpin value and if they are equal I need do get the Y value at the same position.

I tried this, but it doesn't work properly:

```
QVector<double> x(512), y(512);
double rate = prom->doubleSpinBox->value();
double chk_rate = 0;
for (int i=0; i<x.size(); ++i)
{
x[i] = i * 0.1;
y[i] = 10 * qAbs(qSin(2.0 * M_PI * i ));
if (rate == x[i]) chk_rate = y[i];
}
```

There is a warning : comparing floating point with == or != is unsafe!

And besides this in sometimes the result is correct but most of times it shows y[i] = 0;

I was trying to use this way, but i don't know how to finish:

```
QVector<double> x(512), y(512);
double rate = prom->doubleSpinBox->value();
double chk_rate = 0;
auto it = std::find(x.begin(), x.end(), rate);
auto index = std::distance(x.begin(), it);
chk_rate = y[index];
```

There is other warning: implicit conversion loses integer precision: 'long' to 'int'

Could someone help me please?

Cheers

]]>```
const float tolerance(0.0001f);
if (fabs(x - y) < tolerance) {
cout << "equivalent";
} else {
cout < "not equivalent";
}
```

]]>There is a warning : comparing floating point with == or != is unsafe!

Replace `if (rate == x[i])`

with `if(qFuzzyIsNull(rate - x[i]))`

but most of times it shows y[i] = 0;

When `i`

is 0 then `10 * qAbs(qSin(2.0 * M_PI * i ));`

is 0 so it's a perfectly acceptable answer

Due to periodicity

```
10 * qAbs(qSin(2.0 * M_PI * i ))
```

is always zero.

]]>First it generate the vector:

```
void promediation::rateEffect(){
int num = 512;
int freq = 60;
QString label_t = prom->label_2->text();
double amplitude = (100-label_t.toDouble())/2;// interference adjust
double sine = freq*2.0*M_PI;
double r = 0;
QSharedPointer<QCPGraphDataContainer > graphData = prom->customPlot_3->graph(0)->data();
const double time = std::max_element(graphData->begin(),graphData->end(),
[](const QCPGraphData& a, const QCPGraphData& b)->bool{return a.key<b.key;})->key;
double timewindow = time/num;
QVector<double> x(num), y(num), y_final(num);
for (int i=0; i<x.size(); ++i)
{
r = QRandomGenerator::global()->bounded(-100,100); //create a noise
x[i] = i*timewindow; // 0.0208 to show 512 points in 10.66 msec
double time = x[i]/1000;//time in (msec)
y[i] = amplitude*qSin(sine*(time)+r/1000);// Y = Amplitude*Sin(Frequency*2*Pi*time + phase)*ajust
}
for (int i=0; i<x.size(); ++i)
{
y_final[i] = y[i]+plot3Data->at(i)->value;
}
}
```

And the doubleSpinBox set the values to be plotted

```
void promediation::StimRate(){
int num = 700;// max rate 70 Hz
auto plot6 = prom->customPlot_6;
auto plotkey6 = plot6->graph(0)->data();
double taxa = round(prom->doubleSpinBox->value()*1000.0)/1000.0;
QString label_t = prom->label_2->text();
double taxa_v = label_t.toDouble();
QVector<double> x(num), y(num);
for (int i=0; i<x.size(); ++i)
{
x[i] = taxa;
y[i] = i*0.00142;
}
const int PEN_WIDTH = 2;
plot6->addGraph();
plot6->graph(1)->setData(x,y);
QPen iPen;
iPen.setWidth(100);
plot6->graph(1)->setPen(QPen(iPen));
if (taxa_v >= 90){
plot6->graph(1)->setPen(QPen(QColor(0,128,0), PEN_WIDTH));
}
if (taxa_v >= 80 and taxa_v < 90){
plot6->graph(1)->setPen(QPen(QColor(87,122,15), PEN_WIDTH));
}
if (taxa_v >= 70 and taxa_v < 80){
plot6->graph(1)->setPen(QPen(QColor(30,80,180), PEN_WIDTH));
}
if (taxa_v >= 50 and taxa_v < 70){
plot6->graph(1)->setPen(QPen(QColor(10,10,10), PEN_WIDTH));
}
if (taxa_v >= 20 and taxa_v < 50){
plot6->graph(1)->setPen(QPen(QColor(200,120,0), PEN_WIDTH));
}
if (taxa_v < 20){
plot6->graph(1)->setPen(QPen(QColor(255,0,0), PEN_WIDTH));
}
plot6->rescaleAxes();
plot6->replot();
}
```

]]>