Fri Apr 16 10:57:52 2021
EVENTS
 FREE
SOFTWARE
INSTITUTE

POLITICS
JOBS
MEMBERS'
CORNER

MAILING
LIST

NYLXS Mailing Lists and Archives
NYLXS Members have a lot to say and share but we don't keep many secrets. Join the Hangout Mailing List and say your peice.

DATE 2016-11-01

LEARN

2021-04-16 | 2021-03-16 | 2021-02-16 | 2021-01-16 | 2020-12-16 | 2020-11-16 | 2020-10-16 | 2020-09-16 | 2020-08-16 | 2020-07-16 | 2020-06-16 | 2020-05-16 | 2020-04-16 | 2020-03-16 | 2020-02-16 | 2020-01-16 | 2019-12-16 | 2019-11-16 | 2019-10-16 | 2019-09-16 | 2019-08-16 | 2019-07-16 | 2019-06-16 | 2019-05-16 | 2019-04-16 | 2019-03-16 | 2019-02-16 | 2019-01-16 | 2018-12-16 | 2018-11-16 | 2018-10-16 | 2018-09-16 | 2018-08-16 | 2018-07-16 | 2018-06-16 | 2018-05-16 | 2018-04-16 | 2018-03-16 | 2018-02-16 | 2018-01-16 | 2017-12-16 | 2017-11-16 | 2017-10-16 | 2017-09-16 | 2017-08-16 | 2017-07-16 | 2017-06-16 | 2017-05-16 | 2017-04-16 | 2017-03-16 | 2017-02-16 | 2017-01-16 | 2016-12-16 | 2016-11-16 | 2016-10-16 | 2016-09-16 | 2016-08-16 | 2016-07-16 | 2016-06-16 | 2016-05-16 | 2016-04-16 | 2016-03-16 | 2016-02-16 | 2016-01-16 | 2015-12-16 | 2015-11-16 | 2015-10-16 | 2015-09-16 | 2015-08-16 | 2015-07-16 | 2015-06-16 | 2015-05-16 | 2015-04-16 | 2015-03-16 | 2015-02-16 | 2015-01-16 | 2014-12-16 | 2014-11-16 | 2014-10-16

Key: Value:

Key: Value:

MESSAGE
DATE 2016-11-14
FROM Christopher League
SUBJECT Re: [Learn] merge sort in parallel assignment
From learn-bounces-at-nylxs.com Mon Nov 14 14:38:05 2016
Return-Path:
X-Original-To: archive-at-mrbrklyn.com
Delivered-To: archive-at-mrbrklyn.com
Received: from www.mrbrklyn.com (www.mrbrklyn.com [96.57.23.82])
by mrbrklyn.com (Postfix) with ESMTP id 8D778161312;
Mon, 14 Nov 2016 14:38:05 -0500 (EST)
X-Original-To: learn-at-nylxs.com
Delivered-To: learn-at-nylxs.com
Received: from liucs.net (contrapunctus.net [174.136.110.10])
by mrbrklyn.com (Postfix) with ESMTP id DF010160E77
for ; Mon, 14 Nov 2016 14:38:02 -0500 (EST)
Received: from localhost (unknown [148.4.40.11])
by liucs.net (Postfix) with ESMTPSA id E2103E097
for ; Mon, 14 Nov 2016 14:38:00 -0500 (EST)
From: Christopher League
To: learn-at-nylxs.com
In-Reply-To: <1d19cb98-d071-2914-bf6a-d8e4d3bc81d9-at-mrbrklyn.com>
References: <1d19cb98-d071-2914-bf6a-d8e4d3bc81d9-at-mrbrklyn.com>
User-Agent: Notmuch/0.21 (http://notmuchmail.org) Emacs/25.1.1
(x86_64-unknown-linux-gnu)
Date: Mon, 14 Nov 2016 14:37:58 -0500
Message-ID: <87d1hxvomh.fsf-at-contrapunctus.net>
MIME-Version: 1.0
Subject: Re: [Learn] merge sort in parallel assignment
X-BeenThere: learn-at-nylxs.com
X-Mailman-Version: 2.1.17
Precedence: list
List-Id:
List-Unsubscribe: ,

List-Archive:
List-Post:
List-Help:
List-Subscribe: ,

Content-Type: multipart/mixed; boundary="===============1709981009=="
Errors-To: learn-bounces-at-nylxs.com
Sender: "Learn"

--===============1709981009==
Content-Type: multipart/signed; boundary="===-=-=";
micalg=pgp-sha256; protocol="application/pgp-signature"

--===-=-=
Content-Type: multipart/mixed; boundary="=-=-="

--=-=-=
Content-Type: multipart/alternative; boundary="==-=-="

--==-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable


I didn't know about this `std::thread` ... that's a lot easier than
writing the `pthread` stuff by hand, I guess. Nice selection of the
names `sinetro` and `dextro`.

One piece of advice I've seen for parallel tree algorithms in Haskell is
that recursing on left/right asynchronously the whole way down the tree
adds too much overhead. You want to spawn off threads for maybe the top
2-3 layers of subtrees (so 4-8 threads) but then just proceed
sequentially after that. (You're running on 4-8 cores, so any additional
threads sitting around waiting are just overhead.)

CL

Ruben Safir writes:

> So in terms of the HW this is done, although I'm not happy this the
> code. It errors on me when the merge is too large, likely due to a
> combination of compile deficiency and my coding not doing enough error
> checking. It might help to define the standard c++ to 11, but I'm not
> certain of that. I need some sleep.
>
> Reuvain
>
> --=20
> So many immigrant groups have swept through our town
> that Brooklyn, like Atlantis, reaches mythological
> proportions in the mind of the world - RI Safir 1998
> http://www.mrbrklyn.com
>
> DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
> http://www.nylxs.com - Leadership Development in Free Software
> http://www2.mrbrklyn.com/resources - Unpublished Archive
> http://www.coinhangout.com - coins!
> http://www.brooklyn-living.com
>
> Being so tracked is for FARM ANIMALS and and extermination camps,
> but incompatible with living as a free human being. -RI Safir 2013
> /*
> * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> *
> * Filename: msort.h
> *
> * Description: Header File for Parrell Msort algorthm
> *
> * Version: 1.0
> * Created: 11/09/2016 04:28:51 AM
> * Revision: none
> * Compiler: gcc
> *
> * Author: Ruben Safir
> * Company: NYLXS Inc
> *
> * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> */
> #ifndef MSORT_INC
> #define MSORT_INC
>
> namespace merge{
>
>
> int min(int x, int y);
> void track(int , int, int * );
> void merge(int j, int l, int m, int k, int * parent);
> }
> #endif /* ----- #ifndef MSORT_INC ----- */
>
> CXX:=3Dg++=20
> CXXFLAGS:=3D-Wall -ggdb -pg -pthread
>
> LDFLAGS:=3D-L/usr/local/lib/mysql -lmysqlpp -lmysqlclient
>
> msort : msort.o main.o
> ${CXX} ${CXXFLAGS} -o msort msort.o main.o
>
> main.o : main.cpp
> ${CXX} ${CXXFLAGS} -o main.o -c main.cpp=09
>
> msort.o : msort.cpp msort.h
> ${CXX} ${CXXFLAGS} -c msort.cpp
>
> clean :=20
> rm nodes *.o make.deps
> touch *.cpp *.h
>
> include make.deps
> make.deps: *.cpp ; gcc -M *.cpp >$-at-
> #include "msort.h"
> #include
> #include
> namespace merge{
>
> int min(int x, int y){
> int ret;
> x> std::cout << x << ":" << y << "=3D=3D>" << ret << std::endl;
> return ret;
> }
>
> void merge(int j, int l, int m, int k, int * value){
> int size =3D (k-j) + 1;
> std::cout << "Allocating scratch =3D=3D>" << size << std::endl;
> int * scratch =3D new int[size];=20=20
> int l_pos1 =3D j;
> int l_pos2 =3D l;
> int r_pos1 =3D m;
> int r_pos2 =3D k;
> int i =3D 0;
> std::cout << "Scratch index: " << i << std::endl;
> std::cout << "l_pos1: " << l_pos1 << "\tr_pos1: " << r_pos1 << std::endl;
> std::cout << "l_pos2: " << l_pos2 << "\tr_pos2: " << r_pos2 << std::endl;
> int l_next =3D l_pos1;
> int r_next =3D r_pos1;
> int cur =3D -1;//cursor rest position
> int cursor[3] =3D {cur, l_next, r_next};
> while((cursor[1] <=3D l_pos2) && (cursor[2] <=3D r_pos2)) {
> std::cout << "Positions" << cursor[0] << ":" << cursor[1] << ":" << cur=
sor[2] << std::endl;
> std::cout << "Values " << value[cursor[1]] << ":" << value[cursor[2]] =
<< std::endl;
> if(value[cursor[1]] <=3D value[cursor[2]]) {
> scratch[i] =3D value[cursor[1]];
> cursor[0] =3D cursor[1];
> cursor[1]++;
> }else if(value[cursor[1]] > value[cursor[2]]){
> scratch[i] =3D value[cursor[2]];
> cursor[0] =3D cursor[2];
> cursor[2]++;
> }
> std::cout << "Positions" << cursor[0] << ":" << cursor[1] << ":" << cur=
sor[2] << std::endl;
> std::cout << "Values " << value[cursor[1]] << ":" << value[cursor[2]] =
<< std::endl;
> i++;
> }
> //we hit the top
> while(1){
> std::cout << "clearing data...";
> if(cursor[2] <=3D r_pos2 ){
> scratch[i] =3D value[cursor[2]];
> i++;
> cursor[2]++;
> }else if(cursor[1] <=3D l_pos2){
> scratch[i] =3D value[cursor[1]];
> i++;
> cursor[1]++;
> }else{
> break;
> }
> }=09
> std::cout << "done" << std::endl;
> //copy scratch to the array
> std::cout << "copying scratch" << std::endl;
> for(int pos =3D j, i=3D0; i <=3D (k-j); pos++, i++){
> std::cout << i << " : " << scratch[i] <<" to position " << pos << std::=
endl;
> value[pos] =3D scratch[i];
> }
> std::cout << "free scratch" << std::endl;
> delete[] scratch;
> std::cout << "done with scratch" << std::endl;
> return;
> }
>
> //j is far left of array
> //k is far right of array
> //l is middle of array - right of left child array
> //m is middle + 1 of the array - left of right child array
> //
> // j l m k
> //_____________________________________
> //| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11|
> //--------------------------------------
> //
>
>
> void track(int j, int k, int * parent )
> {
> //std::cout << "\n j is far left of array\n k is far right of array\n l =
is middle of array - right of left child array\n m is middle + 1 of the arr=
ay - left of right child array\n\n j l m k\n __=
___________________________________\n | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 1=
1|\n --------------------------------------\n ";
>
> std:: cout << "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D" << std::endl;
>
> std::cout << "|| __NEW NODE__ ||\n|| j =3D>" << j << " " << "k=3D=
> " << k << " ||" << std::endl;
> std:: cout << "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D" << std::endl;
> int length =3D k - j;
> int l =3D j + (length / 2);
> int m =3D l + 1;
>=20=09
>=20=09
> if(j =3D=3D k )
> {
> std::cout << "\n\n\n**********RETURN**********" << std::endl;
> return;
> }
>
> std::cout << "Left Branch: j =3D>" << j << "\t" << "l =3D> " << l << std=
::endl;
> std::cout << "Right Branch: m =3D>" << m << "\t" << "k =3D> " << k << st=
d::endl;
> std::cout << std::endl;
> std::cout << std::endl;
> std::cout << std::endl;
> std::cout << "***Enter left : j =3D>" << j << "\t" << "l =3D> " << l << =
"***" << std::endl;
> std::thread sinetro( track, j, l, parent ) ;
> std::cout << "Returned to Node j =3D> " << j << "\tk=3D> " << k << " Fr=
om the left" << std::endl;
> std::cout << std::endl;
>
> std::cout << "***Enter right : m =3D>" << m << "\t" << "k =3D> " << k <<=
std::endl;
> std::thread dextro( track, m, k, parent);
> std::cout << "Returned to Node j =3D> " << j << "\tk=3D> " << k << " Fr=
om the right" << std::endl;
> std::cout << "**********MERGE**********" << std::endl;
> sinetro.join();
> dextro.join();
> merge(j,l,m,k, parent);
>=20=20=20=20
> }
>
> }//end namespace
> /*
> * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> *
> * Filename: main.cpp
> *
> * Description: merge sort main
> *
> * Version: 1.0
> * Created: 11/09/2016 09:33:20 AM
> * Revision: none
> * Compiler: gcc
> *
> * Author: Ruben Safir
> * Company: NYLXS
> *
> * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> */
> #include
> #include "msort.h"
> #include
> #include
> #include
> #define SIZE 10000
>
> int main(int argv, char **argc)
> {
> using namespace std;
>
> int *data =3D new int[SIZE];
> // int *cache =3D new int[SIZE];
> struct timespec now;
> clock_gettime(CLOCK_REALTIME, &now);
> long seed =3D now.tv_nsec;
> srand( (unsigned int) seed);
> for(int i =3D 0; i < SIZE; i++){
> data[i] =3D rand() % 1000000;
> cout << data[i] << "\t";
> }
> cout << endl;
>
> cout << "________________________________________________________" << en=
dl;
>
> cout << "***Size of Array " << SIZE << "****" << endl;
> cout << "____________________" << endl;
> cout << "Array Before" << endl;
> for(int i =3D 0; i < SIZE; i++){
> cout << "--------------------" << endl;
> cout << "| " << i << " =3D=3D> " << data[i] << "\t |" << endl;
> }
> cout << "--------------------" << endl;
> cout << "--------------------" << endl;
>
>
> merge::track(0, SIZE - 1, data);
>
> cout << "____________________" << endl;
> cout << "Array AFTER" << endl;
> for(int i =3D 0; i < SIZE; i++){
> cout << "--------------------" << endl;
> cout << "| " << i << " =3D=3D> " << data[i] << "\t |" << endl;
> }
> cout << "--------------------" << endl;
> cout << "--------------------" << endl;
>
>
> return 0;
>
> }
>
> _______________________________________________
> Learn mailing list
> Learn-at-nylxs.com
> http://lists.mrbrklyn.com/mailman/listinfo/learn

--==-=-=
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable






1.0, user-scalable=3Dyes">




I didn=E2=80=99t know about this std::thread =E2=80=A6 that=
=E2=80=99s a lot easier than writing the pthread stuff by hand=
, I guess. Nice selection of the names sinetro and dextr=
o
.


One piece of advice I=E2=80=99ve seen for parallel tree algorithms in Ha=
skell is that recursing on left/right asynchronously the whole way down the=
tree adds too much overhead. You want to spawn off threads for maybe the t=
op 2-3 layers of subtrees (so 4-8 threads) but then just proceed sequential=
ly after that. (You=E2=80=99re running on 4-8 cores, so any additional thre=
ads sitting around waiting are just overhead.)


CL


Ruben Safir ruben-at-mrbrklyn.com=
writes:



So in terms of the HW this is done, although I=E2=80=99m not happy this =
the code. It errors on me when the merge is too large, likely due to a comb=
ination of compile deficiency and my coding not doing enough error checking=
. It might help to define the standard c++ to 11, but I=E2=80=99m not certa=
in of that. I need some sleep.


Reuvain


=E2=80=93 So many immigrant groups have swept through our town that Broo=
klyn, like Atlantis, reaches mythological proportions in the mind of the wo=
rld - RI Safir 1998 http://www.mrbrklyn.com


DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://www.nylxs.=
com - Leadership Development in Free Software http://www2.mrbrklyn.com/reso=
urces - Unpublished Archive http://www.coinhangout.com - coins! http://www.=
brooklyn-living.com


Being so tracked is for FARM ANIMALS and and extermination camps, but in=
compatible with living as a free human being. -RI Safir 2013 / =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Filename: msort.h Desc=
ription: Header File for Parrell Msort algorthm Version: 1.0 * C=
reated: 11/09/2016 04:28:51 AM * Revision: none * Compiler: gcc =
Author: Ruben Safir * Company: NYLXS Inc =3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D */ #ifndef MSORT_INC #define MSORT_INC


namespace merge{


int min(int x, int y); void track(int , int, int * ); void merge(int j, =
int l, int m, int k, int * parent); } #endif /* =E2=80=94=E2=80=93 #ifndef =
MSORT_INC =E2=80=94=E2=80=93 */


CXX:=3Dg++ CXXFLAGS:=3D-Wall -ggdb -pg -pthread


LDFLAGS:=3D-L/usr/local/lib/mysql -lmysqlpp -lmysqlclient


msort : msort.o main.o ${CXX} ${CXXFLAGS} -o msort msort.o main.o


main.o : main.cpp ${CXX} ${CXXFLAGS} -o main.o -c main.cpp


msort.o : msort.cpp msort.h ${CXX} ${CXXFLAGS} -c msort.cpp


clean : rm nodes .o make.deps touch .cpp *.h


include make.deps make.deps: .cpp ; gcc -M .cpp >$-at- #include=
=E2=80=9Cmsort.h=E2=80=9D #include #include namespace =
merge{


int min(int x, int y){ int ret; x std::cout << x << ":" << y << "=3D=3D>" << ret << std::e=
ndl; return ret; }


void merge(int j, int l, int m, int k, int * value){ int size =3D (k-j) =
+ 1; std::cout << =E2=80=9CAllocating scratch =3D=3D>=E2=80=9D <=
;< size << std::endl; int * scratch =3D new int[size];
int l=
_pos1 =3D j; int l_pos2 =3D l; int r_pos1 =3D m; int r_pos2 =3D k; int i =
=3D 0; std::cout << =E2=80=9CScratch index:=E2=80=9D << i <&=
lt; std::endl; std::cout << =E2=80=9Cl_pos1:=E2=80=9D << l_pos1=
<< =E2=80=9C_pos1: " << r_pos1 << std::endl; std::c=
out << =E2=80=9Cl_pos2:=E2=80=9D << l_pos2 << =E2=80=9C_p=
os2: " << r_pos2 << std::endl; int l_next =3D l_pos1; int =
r_next =3D r_pos1; int cur =3D -1;//cursor rest position int cursor[3] =3D =
{cur, l_next, r_next}; while((cursor[1] <=3D l_pos2) && (cursor[=
2] <=3D r_pos2)) { std::cout << =E2=80=9CPositions=E2=80=9D <&l=
t; cursor[0] << =E2=80=9C:=E2=80=9D << cursor[1] << =E2=
=80=9C:=E2=80=9D << cursor[2] << std::endl; std::cout << =
=E2=80=9CValues=E2=80=9D << value[cursor[1]] << =E2=80=9C:=E2=
=80=9D << value[cursor[2]] << std::endl; if(value[cursor[1]] &l=
t;=3D value[cursor[2]]) { scratch[i] =3D value[cursor[1]]; cursor[0] =3D cu=
rsor[1]; cursor[1]++; }else if(value[cursor[1]] > value[cursor[2]]){ scr=
atch[i] =3D value[cursor[2]]; cursor[0] =3D cursor[2]; cursor[2]++; } std::=
cout << =E2=80=9CPositions=E2=80=9D << cursor[0] << =E2=
=80=9C:=E2=80=9D << cursor[1] << =E2=80=9C:=E2=80=9D << c=
ursor[2] << std::endl; std::cout << =E2=80=9CValues=E2=80=9D &l=
t;< value[cursor[1]] << =E2=80=9C:=E2=80=9D << value[cursor[=
2]] << std::endl; i++; } //we hit the top while(1){ std::cout <<=
; =E2=80=9Cclearing data=E2=80=A6=E2=80=9D; if(cursor[2] <=3D r_pos2 ){ =
scratch[i] =3D value[cursor[2]]; i++; cursor[2]++; }else if(cursor[1] <=
=3D l_pos2){ scratch[i] =3D value[cursor[1]]; i++; cursor[1]++; }else{ brea=
k; } }
std::cout << =E2=80=9Cdone=E2=80=9D << std::endl; =
//copy scratch to the array std::cout << =E2=80=9Ccopying scratch=E2=
=80=9D << std::endl; for(int pos =3D j, i=3D0; i <=3D (k-j); pos++=
, i++){ std::cout << i << " : " << scratch[i] &=
lt;<" to position " << pos << std::endl; value[pos=
] =3D scratch[i]; } std::cout << =E2=80=9Cfree scratch=E2=80=9D <&=
lt; std::endl; delete[] scratch; std::cout << =E2=80=9Cdone with scra=
tch=E2=80=9D << std::endl; return; }


//j is far left of array //k is far right of array //l is middle of arra=
y - right of left child array //m is middle + 1 of the array - left of righ=
t child array // // j l m k //_____________________________________ //| 0| =
1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| //=E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=
=80=93 //


void track(int j, int k, int * parent ) { //std::cout << =E2=80=9C=
j is far left of arrayk is far right of arrayl is middle of array - right o=
f left child arraym is middle + 1 of the array - left of right child arrayj=
l m k_____________________________________| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| =
10| 11|=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=93=E2=80=9D;


std:: cout << =E2=80=9C=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=E2=80=9D << std::endl;


std::cout << =E2=80=9C|| NEW NODE |||| j =3D>=
=E2=80=9D << j << " " << =E2=80=9Ck=3D>=E2=
=80=9D << k << " ||" << std::endl; std:: cout &=
lt;< =E2=80=9C=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=E2=80=9D << std::endl; int length =3D k - j; int l =3D j + =
(length / 2); int m =3D l + 1;


if(j =3D=3D k ) { std::cout << =E2=80=9C*********RETURN**********=
=E2=80=9D << std::endl; return; }


std::cout << =E2=80=9CLeft Branch: j =3D>=E2=80=9D << j &=
lt;< =E2=80=9C=E2=80=9D << =E2=80=9Cl =3D>=E2=80=9D << l =
<< std::endl; std::cout << =E2=80=9CRight Branch: m =3D>=E2=
=80=9D << m << =E2=80=9C=E2=80=9D << =E2=80=9Ck =3D>=
=E2=80=9D << k << std::endl; std::cout << std::endl; std:=
:cout << std::endl; std::cout << std::endl; std::cout << =
=E2=80=9C***Enter left : j =3D>" << j << =E2=80=9C=E2=
=80=9D << =E2=80=9Cl =3D>=E2=80=9D << l << =E2=80=9C**=
*" << std::endl; std::thread sinetro( track, j, l, parent ) ; st=
d::cout << =E2=80=9CReturned to Node j =3D>=E2=80=9D << j &l=
t;< =E2=80=9C=3D>=E2=80=9D << k << " From the left&q=
uot; << std::endl; std::cout << std::endl;


std::cout << =E2=80=9C***Enter right : m =3D>" << m =
<< =E2=80=9C=E2=80=9D << =E2=80=9Ck =3D>=E2=80=9D << k=
<< std::endl; std::thread dextro( track, m, k, parent); std::cout &l=
t;< =E2=80=9CReturned to Node j =3D>=E2=80=9D << j << =E2=
=80=9C=3D>=E2=80=9D << k << " From the right" <=
< std::endl; std::cout << =E2=80=9C**********MERGE**********=E2=80=
=9D << std::endl; sinetro.join(); dextro.join(); merge(j,l,m,k, paren=
t);


}


}//end namespace / =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =
Filename: main.cpp Description: merge sort main Versi=
on: 1.0 * Created: 11/09/2016 09:33:20 AM * Revision: none * Compiler: gcc =
Author: Ruben Safir * Company: NYLXS =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D */ #include #include =E2=80=9Cmsort.h=E2=80=9D #=
include #include #include #define SIZE 10000


int main(int argv, char **argc) { using namespace std;


int data =3D new int[SIZE]; // int cache =3D new int[SIZE]; str=
uct timespec now; clock_gettime(CLOCK_REALTIME, &now); long seed =3D no=
w.tv_nsec; srand( (unsigned int) seed); for(int i =3D 0; i < SIZE; i++){=
data[i] =3D rand() % 1000000; cout << data[i] << =E2=80=9C=E2=
=80=9D; } cout << endl;


cout << =E2=80=9C_________________________________________________=
_______=E2=80=9D << endl;


cout << =E2=80=9C***Size of Array " << SIZE << =
=E2=80=9C****=E2=80=9D << endl; cout << =E2=80=9C______________=
______=E2=80=9D << endl; cout << =E2=80=9CArray Before=E2=80=9D=
<< endl; for(int i =3D 0; i < SIZE; i++){ cout << =E2=80=9C=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=93=E2=80=9D &l=
t;< endl; cout << =E2=80=9C|=E2=80=9D << i << " =
=3D=3D> " << data[i] << =E2=80=9C|=E2=80=9D << en=
dl; } cout << =E2=80=9C=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=93=E2=80=9D << endl; cout << =E2=80=9C=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=93=E2=80=9D << en=
dl;


merge::track(0, SIZE - 1, data);


  cout << "____________________"  << endl;
cout << "Array AFTER" << endl;

for(int i =3D 0; i < SIZE; i++){ cout << =E2=80=9C=E2=80=94=E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=93=E2=80=9D << endl;=
cout << =E2=80=9C|=E2=80=9D << i << " =3D=3D> &q=
uot; << data[i] << =E2=80=9C|=E2=80=9D << endl; } cout &l=
t;< =E2=80=9C=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=
=80=93=E2=80=9D << endl; cout << =E2=80=9C=E2=80=94=E2=80=94=E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=93=E2=80=9D << endl;


return 0;


}




Learn mailing list Learn-at-nylxs.com http://lists.mrbrklyn.com/mailman/lis=
tinfo/learn






--==-=-=--

--=-=-=--

--===-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEcBAEBCAAGBQJYKhKWAAoJEGuLsz1PMbCLXxMH/1tUR7ys8K2QQ9gR1TR1O6oI
kLjyYZq270QxU2Va3vzj9bWbpZF04Uwr7sw8cxmIvjyA7iajIBkOxh0ZbvFcnU0P
qiLyqPtVHqwrooWNPNwqgUi0xobP2WkokPgx247RvCFfG3VkKnHKKtm9u46hnY1p
q6ehnl+VGc0vzR8PbcnmwkKJmpXOcjEZtAZabwOYAJzm2SJ4Y3qPn9X4h6lNqa+6
TnagXylptyl6rf8TkhMM77FsSCXNTbVGOlmOPgfPQZQSx4jCNJhzN+SzZvCiYu0N
MpvQ3BUyWjmRhegtp7NWR76PvYwkKhr0tUozZpjYNpSboxbyd22qJXgNEQ/iqgM=
=BqmW
-----END PGP SIGNATURE-----
--===-=-=--

--===============1709981009==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Learn mailing list
Learn-at-nylxs.com
http://lists.mrbrklyn.com/mailman/listinfo/learn

--===============1709981009==--

  1. 2016-11-01 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] how is it indexing in cuda
  2. 2016-11-01 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] not adequately speced of explained
  3. 2016-11-01 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] how is it indexing in cuda
  4. 2016-11-01 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] not adequately speced of explained
  5. 2016-11-02 Christopher League <league-at-contrapunctus.net> Re: [Learn] Fitch Algorithm - C++
  6. 2016-11-02 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fitch Algorithm - C++
  7. 2016-11-02 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] how is it indexing in cuda
  8. 2016-11-02 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fitch Algorithm - C++
  9. 2016-11-02 IEEE Computer Society <csconnection-at-computer.org> Subject: [Learn] Hear Google's John Martinis Take on Quantum Computing at
  10. 2016-11-02 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] opencl
  11. 2016-11-02 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] scheduled for tommorw
  12. 2016-11-02 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] threads tutorial
  13. 2016-11-03 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fitch Algorithm - C++
  14. 2016-11-03 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fitch Algorithm - C++
  15. 2016-11-03 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fitch Algorithm - C++
  16. 2016-11-03 Christopher League <league-at-contrapunctus.net> Re: [Learn] huffman code
  17. 2016-11-03 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] huffman code
  18. 2016-11-03 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] huffman code
  19. 2016-11-03 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fitch algorithm from the beginning
  20. 2016-11-03 From: <mrbrklyn-at-panix.com> Subject: [Learn] huffman code
  21. 2016-11-03 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Phenology meeting
  22. 2016-11-03 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] relevant hackathon
  23. 2016-11-03 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] relevant hackathon
  24. 2016-11-04 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] huffman code
  25. 2016-11-04 Christopher League <league-at-contrapunctus.net> Subject: [Learn] Fitch/Sankoff
  26. 2016-11-05 Christopher League <league-at-contrapunctus.net> Re: [Learn] Fwd: templates within templates
  27. 2016-11-05 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: const T vs T const
  28. 2016-11-05 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Template Library files and Header linking troubles
  29. 2016-11-05 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: templates within templates
  30. 2016-11-06 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fwd: templates within templates
  31. 2016-11-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Fwd: templates within templates
  32. 2016-11-06 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fwd: templates within templates
  33. 2016-11-06 Christopher League <league-at-contrapunctus.net> Re: [Learn] Fwd: templates within templates
  34. 2016-11-06 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Fwd: templates within templates
  35. 2016-11-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Fwd: templates within templates
  36. 2016-11-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Fwd: templates within templates
  37. 2016-11-06 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] GNU Parallel 20161022 ('Matthew') released [stable]
  38. 2016-11-07 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] templates and ostream for future reference
  39. 2016-11-08 Christopher League <league-at-contrapunctus.net> Re: [Learn] C++ signature ambiguity
  40. 2016-11-08 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] C++ signature ambiguity
  41. 2016-11-08 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ signature ambiguity
  42. 2016-11-08 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Invitation: Phylogeny meeting -at- Weekly from 10:15 to
  43. 2016-11-08 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] Fwd: [nylug-talk] RSVP open: Wed Nov 16,
  44. 2016-11-09 Christopher League <league-at-contrapunctus.net> Re: [Learn] merge sort parallel hw
  45. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] merge sort parallel hw
  46. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] merge sort parallel hw
  47. 2016-11-09 Christopher League <league-at-contrapunctus.net> Re: [Learn] merge sort parallel hw
  48. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] mergesort tutorial
  49. 2016-11-09 Christopher League <league-at-contrapunctus.net> Re: [Learn] mergesort tutorial
  50. 2016-11-09 Christopher League <league-at-contrapunctus.net> Re: [Learn] namespace and external files confusion
  51. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] namespace and external files confusion
  52. 2016-11-09 From: "Carlos R. Mafra" <crmafra-at-gmail.com> Re: [Learn] Question about a small change
  53. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] =?utf-8?q?C++_call_of_overloaded_=E2=80=98track=28int*=26?=
  54. 2016-11-09 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: lost arguments
  55. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: [dinosaur] Dating origins of dinosaurs,
  56. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] merge sort parallel hw
  57. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] mergesort tutorial
  58. 2016-11-09 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] namespace and external files confusion
  59. 2016-11-10 Christopher League <league-at-contrapunctus.net> Re: [Learn] merge sort parallel hw
  60. 2016-11-10 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] merge sort parallel hw
  61. 2016-11-10 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] merge sort parallel hw
  62. 2016-11-10 Ruben Safir <ruben.safir-at-my.liu.edu> Re: [Learn] merge sort parallel hw
  63. 2016-11-10 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] [Hangout-NYLXS] mergesort tutorial
  64. 2016-11-10 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] Fwd: [Hangout-NYLXS] ease your mind- everything in the
  65. 2016-11-10 Ruben Safir <ruben.safir-at-my.liu.edu> Subject: [Learn] Fwd: [Hangout-NYLXS] R Programming Workshop
  66. 2016-11-10 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Paleocast phenogenetic tree building
  67. 2016-11-11 Christopher League <league-at-contrapunctus.net> Re: [Learn] merge sort parallel hw
  68. 2016-11-12 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] HW of mergesort in parallel
  69. 2016-11-13 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] merge sort in parallel assignment
  70. 2016-11-14 Christopher League <league-at-contrapunctus.net> Re: [Learn] merge sort in parallel assignment
  71. 2016-11-14 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] merge sort in parallel assignment
  72. 2016-11-14 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] merge sort parallel hw
  73. 2016-11-14 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] CUDA and video
  74. 2016-11-14 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] PNG Graphic formats and CRCs
  75. 2016-11-15 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: PNG coding
  76. 2016-11-15 ruben safir <ruben.safir-at-my.liu.edu> Subject: [Learn] Fwd: PNG Coding
  77. 2016-11-16 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Fwd: lost arguments
  78. 2016-11-16 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] relevant hackathon
  79. 2016-11-16 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ Workshop Announcement
  80. 2016-11-16 Ruben Safir <mrbrklyn-at-panix.com> Subject: [Learn] Fwd: Re: ref use
  81. 2016-11-16 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] ref use
  82. 2016-11-16 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] why use a reference wrapper int his example
  83. 2016-11-17 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] [Hangout-NYLXS] at K&R now
  84. 2016-11-17 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: [Hangout-NYLXS] Fwd: PNG Coding
  85. 2016-11-18 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] C++ workshop and usenet responses
  86. 2016-11-19 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: ref use
  87. 2016-11-20 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] when is the constructor called for an object
  88. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: creating a binary tree
  89. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: hidden static
  90. 2016-11-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: ISBI 2017 Call for Abstracts and Non-Author
  91. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: PNG coding
  92. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Re: the new {} syntax
  93. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: when is the constructor called for an object
  94. 2016-11-21 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: when is the constructor called for an object
  95. 2016-11-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: [dinosaur] Eoconfuciusornis feather keratin and
  96. 2016-11-21 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] look what I found
  97. 2016-11-22 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Cuccuency book
  98. 2016-11-22 ruben safir <ruben.safir-at-my.liu.edu> Subject: [Learn] declare a func or call an object
  99. 2016-11-22 Ruben Safir <ruben.safir-at-my.liu.edu> Subject: [Learn] Fwd: Re: Using CLIPS as a library
  100. 2016-11-23 Ruben Safir <ruben.safir-at-my.liu.edu> Subject: [Learn] Fwd: Simple C++11 Wrapper for CLIPS 6.30
  101. 2016-11-23 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Parrelel Programming HW2 with maxpath
  102. 2016-11-24 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] great research news for big data
  103. 2016-11-24 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] mapping algorithms
  104. 2016-11-24 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Todays meeting
  105. 2016-11-25 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: [dinosaur] Flightless theropod phylogenetic variation
  106. 2016-11-26 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Note to self for Thursday
  107. 2016-11-26 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fitch etc
  108. 2016-11-26 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Note to self for Thursday
  109. 2016-11-26 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] operator<<() overloading details and friend
  110. 2016-11-27 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] 130 year old feathers analysis
  111. 2016-11-27 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: ACM/SPEC ICPE 2017 - Call for Tutorial Proposals
  112. 2016-11-27 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: ACM/SPEC ICPE 2017 - Call for Workshop Proposals
  113. 2016-11-27 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: CfP 22nd Conf. Reliable Software Technologies,
  114. 2016-11-27 ruben safir <ruben-at-mrbrklyn.com> Subject: [Learn] Fwd: Seeking contributors for psyche-c
  115. 2016-11-29 Christopher League <league-at-contrapunctus.net> Re: [Learn] Look at this exciting output by my test program
  116. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Look at this exciting output by my test program
  117. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Re: [Learn] Look at this exciting output by my test program
  118. 2016-11-29 Christopher League <league-at-contrapunctus.net> Re: [Learn] Quantum Entanglement
  119. 2016-11-29 Ruben Safir <mrbrklyn-at-panix.com> Re: [Learn] Quantum Entanglement
  120. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Here is the paper I was talking out
  121. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Look at this exciting output by my test program
  122. 2016-11-29 nylxs <mrbrklyn-at-optonline.net> Subject: [Learn] Look at this exciting output by my test program
  123. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] Quantum Entanglement
  124. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] The Death of PBS
  125. 2016-11-29 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] witmer lab ohio and 3d imaging
  126. 2016-11-30 Ruben Safir <ruben-at-mrbrklyn.com> Subject: [Learn] phylogenetic crawler

NYLXS are Do'ers and the first step of Doing is Joining! Join NYLXS and make a difference in your community today!