2020.10.02 11:14 AM
2020.10.05 09:32 AM
Hi Andy,
According to documentation div is for integer division. I assume 15 div 2.5 equals 15 div 3. If you cast 2.5 to integer you will get 3. If you try 6h$2.5 q returns 3i.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 1
02630 ESPOO
kimmo.linna@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 17.31
To: Kdb+ Personal Developers
Subject: [personal kdb+] unexpected behavior for div
q)floor 15%2.5
6
q)15 div 2.5
5
seems like kdb is casting the rhs to the type of lhs before doing the divide? this also affects xbar
q)1.1 xbar 5
5.5
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/41cb1970-101e-4249-9f24-b691f6492711n%40googlegro....
2020.10.05 10:10 AM
2020.10.05 10:54 AM
Hi Andy,
What do you mean? Which is not true?
div is for integer division. https://code.kx.com/q/ref/div/
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3
-3 -4 3 2
q)-7 7 div/:\:-3 -2 2 3
2 3 -4 -3
-3 -4 3 2
If your input is something else it is cast for integer for you.
Xbar is working also according documentation. https://code.kx.com/q/ref/xbar/
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 1
02630 ESPOO
kimmo.linna@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 20.41
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
this is not true. integer division does not mean that the input need to be integer.
in fact, on the reference page they have examples of using div on non integers such as
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3
-3 -4 3 2
On Monday, October 5, 2020 at 12:58:26 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
According to documentation div is for integer division. I assume 15 div 2.5 equals 15 div 3. If you cast 2.5 to integer you will get 3. If you try 6h$2.5 q returns 3i.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 17.31
To: Kdb+ Personal Developers
Subject: [personal kdb+] unexpected behavior for div
q)floor 15%2.5
6
q)15 div 2.5
5
seems like kdb is casting the rhs to the type of lhs before doing the divide? this also affects xbar
q)1.1 xbar 5
5.5
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/41cb1970-101e-4249-9f24-b691f6492711n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/8a019342-ca91-4ff0-a780-05e6246c6e16n%40googlegro....
2020.10.05 11:03 AM
2020.10.05 11:29 AM
Hi Andy,
Xbar is working according to documentation.
And
q)1.1 xbar til 16
0 1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 11 12.1 13.2 14.3 15.4 16.5
Compared to documentation
q)2.5 xbar til 16
0 0 0 2.5 2.5 2.5 5 5 5 7.5 7.5 7.5 10 10 10 12.5
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 1
02630 ESPOO
kimmo.linna@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 21.12
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
xbar is working? so you're saying that
the result of 1.1 xbar 5 is expected to be 5.5? that's ridiculous.
the kdb documentation is very clear, it says "returns y rounded down to the nearest multiple of x."
On Monday, October 5, 2020 at 1:56:37 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
What do you mean? Which is not true?
div is for integer division. https://code.kx.com/q/ref/div/
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3
-3 -4 3 2
q)-7 7 div/:\:-3 -2 2 3
2 3 -4 -3
-3 -4 3 2
If your input is something else it is cast for integer for you.
Xbar is working also according documentation. https://code.kx.com/q/ref/xbar/
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 20.41
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
this is not true. integer division does not mean that the input need to be integer.
in fact, on the reference page they have examples of using div on non integers such as
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3-3 -4 3 2
On Monday, October 5, 2020 at 12:58:26 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
According to documentation div is for integer division. I assume 15 div 2.5 equals 15 div 3. If you cast 2.5 to integer you will get 3. If you try 6h$2.5 q returns 3i.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 590 1074
From: Andy
Sent: maanantai 5. lokakuuta 2020 17.31
To: Kdb+ Personal Developers
Subject: [personal kdb+] unexpected behavior for div
q)floor 15%2.5
6
q)15 div 2.5
5
seems like kdb is casting the rhs to the type of lhs before doing the divide? this also affects xbar
q)1.1 xbar 5
5.5
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/41cb1970-101e-4249-9f24-b691f6492711n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/8a019342-ca91-4ff0-a780-05e6246c6e16n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/17da8baf-1641-4a9b-8ede-498801a8fd36n%40googlegro....
2020.10.05 11:42 AM
2020.10.05 12:40 PM
Hi Andy,
If I have understood right one of the main purpose of xbar is to use it with dates. To get proper intervals for dates and times. Thus one could say that no reasonable kdb developer would use decimals with xbar.
If you really want to look the logic of xbar for decimals you have to look a longer series. For me the following is quite consistent series but I’m just a student, not a developer.
1.4 xbar 5 7.0
1.5 xbar 5 3
1.6 xbar 5 3.2
1.7 xbar 5 3.4
1.8 xbar 5 3.6
1.9 xbar 5 3.8
2.0 xbar 5 4.0
2.1 xbar 5 4.2
2.2 xbar 5 4.4
2.3 xbar 5 4.6
2.4 xbar 5 4.8
2.5 xbar 5 5.0
2.6 xbar 5 2.6
2.7 xbar 5 2.7
2.8 xbar 5 2.8
2.9 xbar 5 2.9
3.0 xbar 5 3.0
3.1 xbar 5 3.1
3.2 xbar 5 3.2
3.3 xbar 5 3.3
3.4 xbar 5 3.4
3.5 xbar 5 3.5
3.6 xbar 5 3.6
3.7 xbar 5 3.7
…
4.8 xbar 5 4.8
4.9 xbar 5 4.9
5.0 xbar 5 5
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 1
02630 ESPOO
kimmo.linna@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 21.45
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
i'm aware that the example in the documentation matches the behavior. but you're missing the point. no reasonable kdb developer would expect this behavior.
the expected output of of 1.1 xbar xbar 5 is 4. the purpose of my post is not to argue with some stranger on the internet, it's to alert kx of a possible bug.
On Monday, October xbar 5, 2020 at 2:37:50 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
Xbar is working according to documentation.
- xbar xbar 5 should give you xbar 5.5
And
q)1.1 xbar til 16
0 1.1 2.2 3.3 4.4 xbar 5.5 6.6 7.7 8.8 9.9 11 12.1 13.2 14.3 15.4 16.5
Compared to documentation
q)2.5 xbar til 16
0 0 0 2.5 2.5 2.5 xbar 5 xbar 5 xbar 5 7.5 7.5 7.5 10 10 10 12.5
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 21.12
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
xbar is working? so you're saying that
the result of 1.1 xbar xbar 5 is expected to be xbar 5.5? that's ridiculous.
the kdb documentation is very clear, it says "returns y rounded down to the nearest multiple of x."
On Monday, October xbar 5, 2020 at 1:56:37 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
What do you mean? Which is not true?
div is for integer division. https://code.kx.com/q/ref/div/
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3
-3 -4 3 2
q)-7 7 div/:\:-3 -2 2 3
2 3 -4 -3
-3 -4 3 2
If your input is something else it is cast for integer for you.
Xbar is working also according documentation. https://code.kx.com/q/ref/xbar/
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 20.41
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
this is not true. integer division does not mean that the input need to be integer.
in fact, on the reference page they have examples of using div on non integers such as
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3-3 -4 3 2
On Monday, October xbar 5, 2020 at 12:58:26 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
According to documentation div is for integer division. I assume 15 div 2.5 equals 15 div 3. If you cast 2.5 to integer you will get 3. If you try 6h$2.5 q returns 3i.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 17.31
To: Kdb+ Personal Developers
Subject: [personal kdb+] unexpected behavior for div
q)floor 15%2.5
6
q)15 div 2.5
5
seems like kdb is casting the rhs to the type of lhs before doing the divide? this also affects xbar
q)1.1 xbar xbar 5
5.5
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/41cb1970-101e-4249-9f24-b691f6492711n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/8a019342-ca91-4ff0-a780-05e6246c6e16n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/17da8baf-1641-4a9b-8ede-498801a8fd36n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/c20b60a5-4c56-42e5-8201-d7f611e17c0en%40googlegro....
2020.10.05 03:20 PM
2020.10.06 01:30 AM
Hi Devon,
That’s true and it’s strange that after 7.05 xbar returns n.05.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 1
02630 ESPOO
kimmo.linna@gmail.com
+358 40 590 1074
From: Devon McCormick
Sent: tiistai 6. lokakuuta 2020 10.44
To: personal-kdbplus@googlegroups.com
Subject: Re: [personal kdb+] unexpected behavior for div
I was going to agree with Kimmo that xbar works as documented as I have my own rounding function in J that works in much the same fashion but then I noticed this:
q)0.05 xbar 0 1 2 3 +/:\: 0.04 0.05 0.06 # Round prices to nearest nickel
0 0.05 0.05
1 1.05 1.05
2 2 2.05
3 3 3.05
It's unclear why 1.05<->0.05 xbar 1.05 but 2<->0.05 xbar 2.05 but I suspect floating point imprecision.
However, the case of 5.5<->1.1 xbar 5.5 seems fine since (the integer 5)*1.1->5.5.
On Mon, Oct 5, 2020 at 3:50 PM Kimmo Linna <kimmo.linna@gmail.com> wrote:
Hi Andy,
If I have understood right one of the main purpose of xbar is to use it with dates. To get proper intervals for dates and times. Thus one could say that no reasonable kdb developer would use decimals with xbar.
If you really want to look the logic of xbar for decimals you have to look a longer series. For me the following is quite consistent series but I’m just a student, not a developer.
- xbar 5 0
- xbar 5 0
- xbar 5 0
- xbar 5 0
- xbar 5 2.5
- xbar 5 3.0
- xbar 5 3.5
- xbar 5 4.0
- xbar 5 4.5
- xbar 5 5
- xbar 5 5.5
- xbar 5 6.0
- xbar 5 6.5
1.4 xbar 5 7.0
1.5 xbar 5 3
1.6 xbar 5 3.2
1.7 xbar 5 3.4
1.8 xbar 5 3.6
1.9 xbar 5 3.8
2.0 xbar 5 4.0
2.1 xbar 5 4.2
2.2 xbar 5 4.4
2.3 xbar 5 4.6
2.4 xbar 5 4.8
2.5 xbar 5 5.0
2.6 xbar 5 2.6
2.7 xbar 5 2.7
2.8 xbar 5 2.8
2.9 xbar 5 2.9
3.0 xbar 5 3.0
3.1 xbar 5 3.1
3.2 xbar 5 3.2
3.3 xbar 5 3.3
3.4 xbar 5 3.4
3.5 xbar 5 3.5
3.6 xbar 5 3.6
3.7 xbar 5 3.7
…
4.8 xbar 5 4.8
4.9 xbar 5 4.9
5.0 xbar 5 5
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo.linna@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 21.45
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
i'm aware that the example in the documentation matches the behavior. but you're missing the point. no reasonable kdb developer would expect this behavior.
the expected output of of 1.1 xbar xbar 5 is 4. the purpose of my post is not to argue with some stranger on the internet, it's to alert kx of a possible bug.
On Monday, October xbar 5, 2020 at 2:37:50 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
Xbar is working according to documentation.
- xbar xbar 5 should give you xbar 5.5
And
q)1.1 xbar til 16
0 1.1 2.2 3.3 4.4 xbar 5.5 6.6 7.7 8.8 9.9 11 12.1 13.2 14.3 15.4 16.5
Compared to documentation
q)2.5 xbar til 16
0 0 0 2.5 2.5 2.5 xbar 5 xbar 5 xbar 5 7.5 7.5 7.5 10 10 10 12.5
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 21.12
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
xbar is working? so you're saying that
the result of 1.1 xbar xbar 5 is expected to be xbar 5.5? that's ridiculous.
the kdb documentation is very clear, it says "returns y rounded down to the nearest multiple of x."
On Monday, October xbar 5, 2020 at 1:56:37 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
What do you mean? Which is not true?
div is for integer division. https://code.kx.com/q/ref/div/
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3
-3 -4 3 2
q)-7 7 div/:\:-3 -2 2 3
2 3 -4 -3
-3 -4 3 2
If your input is something else it is cast for integer for you.
Xbar is working also according documentation. https://code.kx.com/q/ref/xbar/
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 20.41
To: Kdb+ Personal Developers
Subject: Re: [personal kdb+] unexpected behavior for div
this is not true. integer division does not mean that the input need to be integer.
in fact, on the reference page they have examples of using div on non integers such as
q)-7 7 div/:\:-2.5 -2 2 2.5
2 3 -4 -3-3 -4 3 2
On Monday, October xbar 5, 2020 at 12:58:26 PM UTC-4 Kimmo Linna wrote:
Hi Andy,
According to documentation div is for integer division. I assume 15 div 2.5 equals 15 div 3. If you cast 2.5 to integer you will get 3. If you try 6h$2.5 q returns 3i.
Best regards,
Kimmo
--
Kimmo Linna
Nihtisalontie 3 as 102630 ESPOO
kimmo...@gmail.com
+358 40 xbar 590 1074
From: Andy
Sent: maanantai xbar 5. lokakuuta 2020 17.31
To: Kdb+ Personal Developers
Subject: [personal kdb+] unexpected behavior for div
q)floor 15%2.5
6
q)15 div 2.5
5
seems like kdb is casting the rhs to the type of lhs before doing the divide? this also affects xbar
q)1.1 xbar xbar 5
5.5
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/41cb1970-101e-4249-9f24-b691f6492711n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/8a019342-ca91-4ff0-a780-05e6246c6e16n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbpl...@googlegroups.com.To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/17da8baf-1641-4a9b-8ede-498801a8fd36n%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/c20b60a5-4c56-42e5-8201-d7f611e17c0en%40googlegro....
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/13413708-9781-4093-9C68-6D69919648B4%40hxcore.ol.
--
Devon McCormick, CFA
Quantitative Consultant
--
You received this message because you are subscribed to the Google Groups "Kdb+ Personal Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to personal-kdbplus+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/personal-kdbplus/CAGdEmpH4jUacotCqbLm6yqTkC7DNh5xy3BZHTL5EcZmE3y2A....
2020.10.06 01:51 AM
2020.10.06 05:35 AM
On Oct 6, 2020, at 3:45 AM, Devon McCormick <devonmcc@gmail.com> wrote:
I was going to agree with Kimmo that xbar works as documented as I have my own rounding function in J that works in much the same fashion but then I noticed this:q)0.05 xbar 0 1 2 3 +/:\: 0.04 0.05 0.06 # Round prices to nearest nickel0 0.05 0.051 1.05 1.052 2 2.053 3 3.05It's unclear why 1.05<->0.05 xbar 1.05 but 2<->0.05 xbar 2.05 but I suspect floating point imprecision.However, the case of 5.5<->1.1 xbar 5.5 seems fine since (the integer 5)*1.1->5.5.
2020.10.06 06:41 AM
x%y
"2020.10.06 07:32 AM
2020.10.06 09:12 AM
2020.10.06 09:15 AM
Andy <iluvhyori@gmail.com> kirjoitti 6.10.2020 kello 18.57:
xbar is implemented using div so it affects both. Ajay brings up a good point. when both the lhs and rhs are float, there are no issues. the issue only arises when types are mixed. I'm quite certain this is NOT the intended behavior.q)5 div 1.15q)5.0 div 1.14fq)1.1 xbar 55.5q)1.1 xbar 5.04.4
2020.10.06 01:20 PM
2020.10.07 06:13 AM
2020.10.07 06:18 AM
2020.10.07 07:25 AM
2020.10.05 04:03 PM
Round down
x xbar y xbar[x;y]Where
returns y rounded down to the nearest multiple of x.
EMEA
Tel: +44 (0)28 3025 2242
AMERICAS
Tel: +1 (212) 447 6700
APAC
Tel: +61 (0)2 9236 5700
KX. All Rights Reserved.
KX and kdb+ are registered trademarks of KX Systems, Inc., a subsidiary of FD Technologies plc.