Friday, June 7, 2019

Digest for comp.lang.c++@googlegroups.com - 22 updates in 4 topics

Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 06:13AM +0100

On 06/06/2019 20:00, Rick C. Hodgin wrote:
> come true to date, I know it's at least a few hundred. Maybe a
> few thousand?? So, I guess the better question would be: How
> long until YOUR false statement becomes true?
 
And Satan invented fossils, yes?
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
"Chris M. Thomasson" <invalid_chris_thomasson_invalid@invalid.com>: Jun 06 10:21PM -0700

On 6/6/2019 10:13 PM, Mr Flibble wrote:
> On 06/06/2019 20:00, Rick C. Hodgin wrote:
[...]
> And Satan invented fossils, yes?
 
 
Did it invent XOR?
Cholo Lennon <chololennon@hotmail.com>: Jun 07 03:29AM -0300

On 6/6/19 1:42 PM, Alf P. Steinbach wrote:
 
> Same rule for return type spec and argument spec = simpler, and shorter.
 
> It's also simpler in a number of other cases, e.g. consider a function
> returning a reference to an array.
 
But Alf, you use trailing return type syntax for function main :-O
 
Regards
 
--
Cholo Lennon
Bs.As.
ARG
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 06 07:45PM +0100

On 06/06/2019 18:55, Rick C. Hodgin wrote:
> why you need to repent and ask forgiveness, and then He cleanses
> you of your unrighteousness before God. It fills you with calm and
> joy on the inside like none other.
 
Nonsense.
A) Your bible is false.
B) Your god the existence of which is predicated on your bible being true
is, given (A), also false.
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
"Öö Tiib" <ootiib@hot.ee>: Jun 07 01:52AM -0700

On Friday, 7 June 2019 09:30:11 UTC+3, Cholo Lennon wrote:
 
> > It's also simpler in a number of other cases, e.g. consider a function
> > returning a reference to an array.
 
> But Alf, you use trailing return type syntax for function main :-O
 
But *if* to use trailing return style for non-void functions then
most logically all code-base should use it and only it
(including definition of main).
 
Unfortunately C++ hasn't added trailing type syntax to
"variables" so such style would still feel half-baked.
 
Most logical declaration order of data element is
something like that:
1) indicate first the kind of citizen. IOW if what we declare is
constant or variable (if the language has both). If language
does not have both then indicate if it is code or data (if the
language makes difference between the two). In C++ it is
question if it is "variable" or "reference" ("alias" would be
more precise term about "reference") and if its value is
mutable or immutable. Notice slight nonsensicality of
English: how can it "vary" when being "immutable" or even
"compile-time immutable"?
2) Then comes name as most important property of citizen.
3) Then we should give it (initial) value. That is mandatory
for constants whose declaration does coincide with
start of life-time but can be optional for variables.
4) Finally there may be need to indicate its type if
language enforces type of an data element to be
immutable during its life-time. Even then it is optional
for variables that have initial value.
 
It would look something like
 
constexpr answer = 42 : uint8_t;
 
However that all is too trivial to rearrange in our brains
so I don't think we should somehow extend C++ for
getting that minor clarity benefit. All the human languages
are far less logical than C++ (that majority of programmers
curse with passion), but we use those with ease.
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 02:54PM +0100

On 07/06/2019 09:52, Öö Tiib wrote:
 
> But *if* to use trailing return style for non-void functions then
> most logically all code-base should use it and only it
> (including definition of main).
 
Why only for non-void functions? If your primary concern is consistency
then be fucking consistent.
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
Ian Collins <ian-news@hotmail.com>: Jun 08 10:49AM +1200

On 07/06/2019 04:42, Alf P. Steinbach wrote:
>>> }
 
>> If you are a proponent KISS then why aren't *you* keeping it simple by using auto return type when you don't have to, stupid?
 
> Trailing return type syntax is generally simpler than the old syntax.
 
If you want simple, use simple. Your function definition doesn't even
need the trailing return type and could just be written
 
auto xor_of( const vector<Item>& a, const vector<Item>& b )
{
 
I tend to only use auto return deduction when the compiler can do the
work for me!
 
--
Ian.
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 11:52PM +0100

On 07/06/2019 23:49, Ian Collins wrote:
> {
 
> I tend to only use auto return deduction when the compiler can do the work
> for me!
 
I class that as obfuscation: I no longer know what the function return
type is without recourse to looking at the function body.
 
/Flibble
 
--
"Snakes didn't evolve, instead talking snakes with legs changed into
snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 08:31PM +0100

Hi!
 
Coming soon!
 
neonumeral - a free C++ library for arbitrary-precision arithmetic
(permissive software license).
 
https://github.com/i42output/neonumeral
 
neonumeral will be used by my project "neos" - a universal compiler that
can compile any programming language.
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 07 12:38PM -0700

On Friday, June 7, 2019 at 3:31:13 PM UTC-4, Mr Flibble wrote:
> https://github.com/i42output/neonumeral
 
Noticed something. Your logic's not consistent.
 
Here you return lhs if <=.
 
inline constexpr uint32_t min(uint32_t aLhs, uint32_t aRhs)
{
return aLhs <= aRhs ? aLhs : aRhs;
}
 
Here you return lhs if >=.
 
inline constexpr uint32_t max(uint32_t aLhs, uint32_t aRhs)
{
return aLhs >= aRhs ? aLhs : aRhs;
}
 
To be consistent, you should return lhs in max only on >, or lhs
in min only on < (your choice), changing one of them and leaving
the other.
 
--
Rick C. Hodgin
"Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com>: Jun 07 09:51PM +0200

On 07.06.2019 21:31, Mr Flibble wrote:
 
> https://github.com/i42output/neonumeral
 
> neonumeral will be used by my project "neos" - a universal compiler that
> can compile any programming language.
 
I guess we can expect even more universal compiler spin-off projects in
the near future, judging by my own habit of delving into things.
 
But, does it support Roman numerals?
 
<url: https://github.com/tcbrindle/numeris_romanis>
 
 
Cheers!,
 
- Alf
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 10:00PM +0100

On 07/06/2019 20:38, Rick C. Hodgin wrote:
 
> To be consistent, you should return lhs in max only on >, or lhs
> in min only on < (your choice), changing one of them and leaving
> the other.
 
Nonsense: they behave the same as std::min and std::max. Your god is
clouding your thinking.
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 07 03:21PM -0700

On Friday, June 7, 2019 at 5:00:45 PM UTC-4, Mr Flibble wrote:
> > the other.
 
> Nonsense: they behave the same as std::min and std::max. Your god is
> clouding your thinking.
 
 
My God is an upper-case "G" God. He doesn't cloud thinking, He
makes it true:
 
https://www.biblegateway.com/passage/?search=1+Corinthians+14%3A33&version=KJV
 
33 For God is not the author of confusion, but of peace, as
in all churches of the saints.
 
My min/max functions are the same way ... I was just pointing
out the logic's not consistent in the way you have it setup.
I've never noticed it before, but it stood out today when I
saw yours written like that. Makes sense why it is that way.
Very little difference in assembly if you switch it. It
would depend on how good your branch prediction logic is. I
suppose there's some logic in looking at a two-weighted test
as having a more probable branch condition.
 
--
Rick C. Hodgin
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 11:40PM +0100

On 07/06/2019 23:21, Rick C. Hodgin wrote:
> would depend on how good your branch prediction logic is. I
> suppose there's some logic in looking at a two-weighted test
> as having a more probable branch condition.
 
More nonsense. My logic isn't inconsistent at all: as I said in my first
reply what I am doing is equivalent to what std::min and std::max do. The
only reason I am not using < is because I am dealing with a scalar type in
a non-template context and there is no requirement to do that in this
context. The stuff on branch prediction logic is further nonsense
bordering on word salad as one can not make any assumptions about the
values of the arguments. Your god is definitely clouding your thinking.
 
/Flibble
 
--
"Snakes didn't evolve, instead talking snakes with legs changed into
snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
Martijn van Buul <pino@dohd.org>: Jun 07 12:47PM

Hello,
 
I know this is a bit off-topic (or is it?) but I'm hoping someone
over here can shed a light on this anyway:
 
I have a very simple program:
 
#include <cinttypes>
#include <iostream>
 
constexpr uint64_t operator "" _GHz(long double arg)
{
return (uint64_t) (1E9L * arg);
}
 
int main()
{
std::cout << 2.1_GHz << std::endl;
return 0;
}
 
Yes, I'm aware that there is a potential trunctation issue here, because
"2.1" has a terrible floating point representation. I also know how to
address it. However, I don't see any *UB* here: The result should always
be the same. It might be unexpected, but not unpredictable.
 
Except, it is:
 
[martijnb@tim ~]$ g++ ./wtf.cpp
[martijnb@tim ~]$ ./a.out
2099999999
[martijnb@tim ~]$ valgrind -q ./a.out
2100000000
[martijnb@tim ~]$ exit
 
I godbolted this, and I discovered that the 'constexpr' declaration is
being ignored when compiling without optimizations - the user-defined
literal is still being evaluated at runtime. However, I don't understand
why the truncation has a different result depending on whether it runs in
valgrind or not. Once I compile this with any level of optimisation, the
difference goes away.
 
Any suggestions to avoid this? Am I hitting UB, and if so: why? I wished I
could avoid the "long double" argument here, but as far as I can tell I can't.
 
Martijn
 
PS: This reminds me of earlier issues a few years ago (where gcc was using the
80-bit floating point registers of Intel x87 FPUs for operation on 64-bit
doubles), but maybe I'm seeing ghosts. Also, that still doesn't quite
explain why valgrind makes a difference, and I would expect truncation
to have an effect in the *opposite* direction: it would make the
represented value *lower*, not *higher*.
 
 
--
Martijn van Buul - pino@dohd.org
"Öö Tiib" <ootiib@hot.ee>: Jun 07 06:51AM -0700

On Friday, 7 June 2019 15:47:50 UTC+3, Martijn van Buul wrote:
> However, I don't see any *UB* here: The result should always
> be the same. It might be unexpected, but not unpredictable.
 
I also do not see any UB here but that does not mean the
result should be always the same.
Have you read David Goldberg's 28 years old paper on the
subject?
Hmm ... Oracle has copy up:
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
 
> Any suggestions to avoid this?
 
You have to round when you don't want your results to be
(sometimes unpredictably, See the paper) truncated.
Christian Gollwitzer <auriocus@gmx.de>: Jun 07 08:56PM +0200

Am 07.06.19 um 15:51 schrieb Öö Tiib:
 
>> Any suggestions to avoid this?
 
> You have to round when you don't want your results to be
> (sometimes unpredictably, See the paper) truncated.
 
 
I don't think this is the problem. Floating point numbers are by
definition inaccurate, but this does not mean they are irreproducible.
If you perform the exact same operations twice, you'll get the same
(bitexact) result. Across architectures it may vary, but even the IEEE
standard defines bit-exact addition, subtraction, multiplication and
square root. So even across architecture, with the same IEEE flags set
(rounding etc.) simple computations give bit-identical results.
 
Maybe valgrind has a bug, or it does not support the long double (80
bit) data type and emulates it with 64bit double computations?
 
Christian
Michael W Powell <mwpowelllde@gmail.com>: Jun 06 04:58PM -0700

On Tuesday, June 4, 2019 at 11:36:55 PM UTC-4, Rick C. Hodgin wrote:
> I came across an interesting factoid today:
 
Not sure what you're fishing for here, difference between the `nation´ Israel and the `state´ Israel? It's a hotly debated subject these days for anyone Spirit filled, awake, and connected with the Truth.
 
However, there are many mysteries in Scripture, many levels of meaning and make one go `hmm´ so to say. Such as, you can calculate the values of `PI´ and of the engineering constant `e´ to something like four decimal places:
 
https://www.khouse.org/articles/2003/482/ (The Mysteries of Pi and e)
 
To understand this, one first needs to understand that both Hebrew and Greek languages assign a numerical value to their letters. With that as the background...
 
If you take Genesis 1:1 in the original Hebrew and: The number of letters * the product of the letters / The number of words * the product of the words, you get 3.1416 * 10^17.
 
If you take John 1:1 in the original Greek and: The number of letters * the product of the letters / The number of words * the product of the words, you now get 2.7183 * 10^40.
 
However, I'm not sure what that has to do with the C++ programming language, per se. That is to say, there's a time and a place for this type of discussion, and it ain't here on this message board, let's just agree on that, shall we?
 
Cheers, mate.
 
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 06 05:54PM -0700

On Thursday, June 6, 2019 at 7:58:41 PM UTC-4, Michael W Powell wrote:
> ...there's a time and a place for this type of discussion...
 
 
I agree. It's why I posted here in clc++.
 
You see, Michael, God cares about all people. Not just those who
visit places where people talk about religion. He cares just ad
much about those who wouldn't visit those places.
 
Michael = The name of the most powerful of God's angels. A warrior.
 
--
Rick C. Hodgin
Szyk Cech <szykcech@spoko.pl>: Jun 07 08:17PM +0200

[Jesus Loves You] you mean: Jesus loves you but you must hate your family?!?
I am interesting in truth so I read many books about history. Some of
them were from "oficial" bullshit canal, but most interested were books
from "underground" or form "margins" of book market. I also read Bible.
 
In true you don't have to read as many books as I read. Bible is
enought. But you must read it literaly and judge whether every sentece
or story is wisdom or bulshit. If you read Jesus speeches you quickly
will discover that most of them are pretty antisocial and pure nonsense
to rational mind.
 
That true were aware our ancient leaders (mean: Scytchs == Sarmats ==
Lechians == Vandals == Goths == Vikings == Arians). That remind to us
great man: Paweł Szydłowski (Pole emigrated from Canada) in his great
books with attached great bibliography: "Tajemice pisma świętego" eng:
"Mysteries of Bible" and "Vandale czyli Polacy" eng: "Vandals mean Poles".
 
That ancient Arian belivers (Poles were Arian before switch to
Catholics) were one great sentence about Jesus:
"Ale luj-a!" (eng. "hallelujah") - this means in Polish "What the creep!"
But most of the Jesus believers think that hallelujah mean something
amazing and saint. That is pure stupidity.
 
Good question is: What happened to these wise Polish Arians?!? I don't
know. But to my mind our leaders betrayed ancient/extrateresial wisdom
by import cristianity to our country for some personal advantages. For
sure this was not coward decision - they have great power at the time
(they have plans to acquire both Emperor Crowns: east and west Roman
Empire crowns - and they almost succedd in first years of second
milenium AC). I also don't believe they were stupid. So I think they
were traitors. After this catastrophic year (966 AC) were many efforts
to drop cristianity. But external forces and "cristianity mind
devastation syndrome" cause we lost 3/4 territory within 150 years and
there were one step from anichilation of the Poles nation.
 
Do you remember that great 9 crusades to Palestine? - how do you think
it is big or small number?!? If you think that it is great number then I
have other statistics: from 1025 to 1410 AC Pope and die Deutschen
(wrongly called Gemmans - Germany were one of the Lechians country -
pure slavic - die Deutschen conquer them all - they weren't in Germania
before 900 AC). So the Pope and die Deutschen organize almost 50
crusades against Poland! Last of them were in 1410 AC and after great
batle near Grunwald Poland were saved for 3 centuries. But "cristianity
mind devastation syndrome" is very hard to cure disease (especialy when
you don't see the problem) and finaly destroy our country in 1795 AC. It
can also destroy any other family and country which believe in these
Jesuses nonsenses.
I never hear even single word "Sorry..." from Pope and die Deutschen for
these violence and bestiality in the name of Jesus and Mary. Maybe they
are still think: "It was wise"...
 
more thinking and less stupidity
best regards
Szyk Cech
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Jun 07 11:27AM -0700

On Friday, June 7, 2019 at 2:18:08 PM UTC-4, Szyk Cech wrote:
> [Jesus Loves You] you mean: Jesus loves you but you must hate
> your family?!?
 
You're referring to Luke 14:25+?
 
There's a sermon which describes what He's saying there:
 
"It Will Cost You Everything"
by Steven J. Lawson
 
https://www.youtube.com/watch?v=VxnCD-yffWo
 
The Bible records good and bad things. It records accurately what
men have done throughout history. It records things that make it
seem like God is cruel or harsh at times. That outer appearance is
removed once you study the Bible and realize why God moved as He
did, and why the Bible conveys the bad things of men as it does.
 
All of it is given to us for teaching.
 
-----
But the one thing people forget when they get caught up in all of
the detail they can argue about this, or argue about that, is that
there's a fundamental underlying principle that needs to be addressed
first:
 
1) You have sin.
2) Your sin condemns your soul to eternal Hellfire.
3) Jesus came to forgive your sin, and take away that punishment.
4) He will give you forgiveness for the asking today, so that you
will not perish when you leave this world, but will have ever-
lasting life.
 
People like to argue over points. That's actually the enemy's prompt-
ing. The enemy wants people operating in their flesh, in their minds,
in their reasoning, because all of that is corrupt because of sin. He
knows that if you can be kept there, at that place of self/personal
beliefs, than he has you because your pride and belief in self will a-
rise, and you won't seek out the truth.
 
God looks for people who will seek the truth, and pursue it with a
real passion.
 
--
Rick C. Hodgin
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jun 07 07:44PM +0100

On 07/06/2019 19:27, Rick C. Hodgin wrote:
> rise, and you won't seek out the truth.
 
> God looks for people who will seek the truth, and pursue it with a
> real passion.
 
And Satan invented fossils, yes?
 
/Flibble
 
--
"Talking snakes with legs changed into snakes." - Rick C. Hodgin
 
"You won't burn in hell. But be nice anyway." – Ricky Gervais
 
"I see Atheists are fighting and killing each other again, over who
doesn't believe in any God the most. Oh, no..wait.. that never happens." –
Ricky Gervais
 
"Suppose it's all true, and you walk up to the pearly gates, and are
confronted by God," Bryne asked on his show The Meaning of Life. "What
will Stephen Fry say to him, her, or it?"
"I'd say, bone cancer in children? What's that about?" Fry replied.
"How dare you? How dare you create a world to which there is such misery
that is not our fault. It's not right, it's utterly, utterly evil."
"Why should I respect a capricious, mean-minded, stupid God who creates a
world that is so full of injustice and pain. That's what I would say."
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com.

No comments: